Manual:PHP unit testing/PostgreSQL

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.