mirror of
https://github.com/git/git.git
synced 2024-11-24 02:17:02 +08:00
1d42b4d01c
Replace the use of screen-scraping in the test environment
installation with simply invoking MediaWiki's command-line
installer.
The old code being deleted here relied on our own hardcoded POST
parameter names & the precise layout of MediaWiki's GUI installer at a
given version. Somewhere between [1] and now this inevitably broke.
As far as I can tell there was never a reason for this screen-scraping
hack, when [1] was introduced it hardcoded MediaWiki 1.19.0, the CLI
installer was introduced in 1.17.0. Perhaps the authors weren't aware
of it, or this code was written for an older version.
This allows us to simply delete our own template version of
LocalSettings.php, it'll instead be provided by the CLI installer.
While we're at it let's fix a few things, these changes weren't
practical to split up (I'd need to fix code I was about to mostly
delete)
* Use MediaWiki's own defaults where possible, e.g. before we'd name
the database "wikidb.sqlite", now we'll simply use whatever name
MediaWiki prefers (currently my_wiki.sqlite) by only supplying the
directory name the SQLite file will be dropped into, not the full
path.
* Put all of our database & download assets into a new "mediawiki/"
folder. This makes it easier to reason about as the current &
template "backup" database the tests keep swapping around live
next to each other.
This'll also prevent future potential breakage as there isn't a
single SQLite database. MediaWiki also creates a job queue
database and a couple of cache databases. In practice it seems we
got away with not resetting these when we reset the main database,
but it's the sort of thing that could break in the future (reset,
main store doesn't have the article, but the cache does).
* The "delete" function now only deletes the MediaWiki installation
& database, not the downloaded .tar.gz file. This makes us
friendlier to a developer on a slow connection.
1.
|
||
---|---|---|
.. | ||
.gitignore | ||
install-wiki.sh | ||
Makefile | ||
push-pull-tests.sh | ||
README | ||
t9360-mw-to-git-clone.sh | ||
t9361-mw-to-git-push-pull.sh | ||
t9362-mw-to-git-utf8.sh | ||
t9363-mw-to-git-export-import.sh | ||
t9364-pull-by-rev.sh | ||
t9365-continuing-queries.sh | ||
test-gitmw-lib.sh | ||
test-gitmw.pl | ||
test.config |
Tests for Mediawiki-to-Git ========================== Introduction ------------ This manual describes how to install the git-remote-mediawiki test environment on a machine with git installed on it. Prerequisite ------------ In order to run this test environment correctly, you will need to install the following packages (Debian/Ubuntu names, may need to be adapted for another distribution): * lighttpd * php * php-cgi * php-cli * php-curl * php-sqlite Principles and Technical Choices -------------------------------- The test environment makes it easy to install and manipulate one or several MediaWiki instances. To allow developers to run the testsuite easily, the environment does not require root privilege (except to install the required packages if needed). It starts a webserver instance on the user's account (using lighttpd greatly helps for that), and does not need a separate database daemon (thanks to the use of sqlite). Run the test environment ------------------------ Install a new wiki ~~~~~~~~~~~~~~~~~~ Once you have all the prerequisite, you need to install a MediaWiki instance on your machine. If you already have one, it is still strongly recommended to install one with the script provided. Here's how to work it: a. change directory to contrib/mw-to-git/t/ b. if needed, edit test.config to choose your installation parameters c. run `./install-wiki.sh install` d. check on your favourite web browser if your wiki is correctly installed. Remove an existing wiki ~~~~~~~~~~~~~~~~~~~~~~~ Edit the file test.config to fit the wiki you want to delete, and then execute the command `./install-wiki.sh delete` from the contrib/mw-to-git/t directory. Run the existing tests ~~~~~~~~~~~~~~~~~~~~~~ The provided tests are currently in the `contrib/mw-to-git/t` directory. The files are all the t936[0-9]-*.sh shell scripts. a. Run all tests: To do so, run "make test" from the contrib/mw-to-git/ directory. b. Run a specific test: To run a given test <test_name>, run ./<test_name> from the contrib/mw-to-git/t directory. How to create new tests ----------------------- Available functions ~~~~~~~~~~~~~~~~~~~ The test environment of git-remote-mediawiki provides some functions useful to test its behaviour. for more details about the functions' parameters, please refer to the `test-gitmw-lib.sh` and `test-gitmw.pl` files. ** `test_check_wiki_precond`: Check if the tests must be skipped or not. Please use this function at the beginning of each new test file. ** `wiki_getpage`: Fetch a given page from the wiki and puts its content in the directory in parameter. ** `wiki_delete_page`: Delete a given page from the wiki. ** `wiki_edit_page`: Create or modify a given page in the wiki. You can specify several parameters like a summary for the page edition, or add the page to a given category. See test-gitmw.pl for more details. ** `wiki_getallpage`: Fetch all pages from the wiki into a given directory. The directory is created if it does not exists. ** `test_diff_directories`: Compare the content of two directories. The content must be the same. Use this function to compare the content of a git directory and a wiki one created by wiki_getallpage. ** `test_contains_N_files`: Check if the given directory contains a given number of file. ** `wiki_page_exists`: Tests if a given page exists on the wiki. ** `wiki_reset`: Reset the wiki, i.e. flush the database. Use this function at the beginning of each new test, except if the test re-uses the same wiki (and history) as the previous test. How to write a new test ~~~~~~~~~~~~~~~~~~~~~~~ Please, follow the standards given by git. See git/t/README. New file should be named as t936[0-9]-*.sh. Be sure to reset your wiki regularly with the function `wiki_reset`.