Manual:PHP unit testing/PostgreSQL

From mediawiki.org

Status[edit]

MediaWiki's PHPUnit test suite as a whole runs ok on a PostgreSQL configuration.

Hints for devs[edit]

Setting up a pgsql environment on Ubuntu Linux:

  • apt-get install postgresql php5-pgsql
  • Follow notes from eg [1] on setting up a password for 'postgres' special user
  • If lazy, throw that 'postgres' username and password straight into MediaWiki's installer

Ideally, you should probably set up an account for the wiki etc, but who knows man!

Possible problems[edit]

It kinda looks like things are modifying the core database that shouldn't... after running the unit tests a couple times through, I saw my wiki has been cluttered with extra users:

    Altuseruser (Created on 24 October 2011 at 15:42)
    Apitestsysop (Created on 24 October 2011 at 15:42)
    Apitestuser (Created on 24 October 2011 at 15:42)
    Brionv‏‎ (administrator, bureaucrat) (Created on 24 October 2011 at 15:39)
    Uploadstashtestsysop (Created on 24 October 2011 at 15:40)
    Uploadstashtestuser (Created on 24 October 2011 at 15:40)
    Useruser (Created on 24 October 2011 at 15:42)
    UTApiBlockee (Created on 24 October 2011 at 15:42)
    UTBlockee (Created on 24 October 2011 at 15:42)
    UTSysop (Created on 24 October 2011 at 15:40)

The unit tests should not alter the live database, and these don't end up visible on a MySQL instance...

Ditto with the #Test failures below, looks like a live count is being updated?


Had to bump up $wgMaxShellMemory and $wgMaxShellFileSize to make some shell-out commands happy.

Test failures[edit]

There was 1 failure:

1) ParserTests::testParserTest with data set #182 ('Magic Word: {{NUMBEROFFILES}}', '{{NUMBEROFFILES}}', '<p>2
</p>', '', '')
Magic Word: {{NUMBEROFFILES}}
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-<p>2
+<p>366
 </p>

/var/www/pg/tests/phpunit/includes/parser/NewParserTest.php:540
/var/www/pg/tests/phpunit/MediaWikiTestCase.php:61
/var/www/pg/tests/phpunit/MediaWikiPHPUnitCommand.php:31
/var/www/pg/tests/phpunit/phpunit.php:60

We have a larger number than expected, not really sure why. Possibly something's awry with the test table setup.


Skipped tests[edit]

There were 5 skipped tests:

1) SearchEngineTest::testFullWidth
MySQL or SQLite with FTS3 only

/var/www/pg/tests/phpunit/includes/search/SearchEngineTest.php:29
/var/www/pg/tests/phpunit/MediaWikiTestCase.php:61
/var/www/pg/tests/phpunit/MediaWikiPHPUnitCommand.php:31
/var/www/pg/tests/phpunit/phpunit.php:60
2) SearchEngineTest::testTextSearch
MySQL or SQLite with FTS3 only

/var/www/pg/tests/phpunit/includes/search/SearchEngineTest.php:29
/var/www/pg/tests/phpunit/MediaWikiTestCase.php:61
/var/www/pg/tests/phpunit/MediaWikiPHPUnitCommand.php:31
/var/www/pg/tests/phpunit/phpunit.php:60
3) SearchEngineTest::testTextPowerSearch
MySQL or SQLite with FTS3 only

/var/www/pg/tests/phpunit/includes/search/SearchEngineTest.php:29
/var/www/pg/tests/phpunit/MediaWikiTestCase.php:61
/var/www/pg/tests/phpunit/MediaWikiPHPUnitCommand.php:31
/var/www/pg/tests/phpunit/phpunit.php:60
4) SearchEngineTest::testTitleSearch
MySQL or SQLite with FTS3 only

/var/www/pg/tests/phpunit/includes/search/SearchEngineTest.php:29
/var/www/pg/tests/phpunit/MediaWikiTestCase.php:61
/var/www/pg/tests/phpunit/MediaWikiPHPUnitCommand.php:31
/var/www/pg/tests/phpunit/phpunit.php:60
5) SearchEngineTest::testTextTitlePowerSearch
MySQL or SQLite with FTS3 only

/var/www/pg/tests/phpunit/includes/search/SearchEngineTest.php:29
/var/www/pg/tests/phpunit/MediaWikiTestCase.php:61
/var/www/pg/tests/phpunit/MediaWikiPHPUnitCommand.php:31
/var/www/pg/tests/phpunit/phpunit.php:60


Probably these test cases need updating to make sure they run on PG's search engine as well.