From 654b8ab053b59626a0327ffda69e8b3eb7c42bb5 Mon Sep 17 00:00:00 2001 From: Platonides Date: Mon, 1 Nov 2010 18:23:33 +0000 Subject: [PATCH] Modified the tests so that a database is not unnecessarily required. Database group for tests needing a db. The other tests should be runnable without a server running! Destructive group for tests which modify the db. Added two more actions to the makefile: safe and databaseless --- maintenance/tests/phpunit/Makefile | 19 ++++++++++++++++--- maintenance/tests/phpunit/bootstrap.php | 12 ++++++++++++ .../includes/LanguageConverterTest.php | 3 +++ .../tests/phpunit/includes/MessageTest.php | 2 +- .../phpunit/includes/TitlePermissionTest.php | 4 ++++ .../tests/phpunit/includes/api/ApiTest.php | 1 + .../phpunit/includes/api/ApiWatchTest.php | 1 + .../phpunit/includes/db/DatabaseTest.php | 3 +++ .../phpunit/includes/search/SearchDbTest.php | 4 ++++ .../includes/search/SearchEngineTest.php | 1 + .../includes/search/SearchUpdateTest.php | 3 +++ 11 files changed, 49 insertions(+), 4 deletions(-) diff --git a/maintenance/tests/phpunit/Makefile b/maintenance/tests/phpunit/Makefile index dd3399c42e..e14c5b1677 100644 --- a/maintenance/tests/phpunit/Makefile +++ b/maintenance/tests/phpunit/Makefile @@ -1,4 +1,4 @@ -.PHONY: help test phpunit install coverage warning destructive parser noparser list-groups +.PHONY: help test phpunit install coverage warning destructive parser noparser safe databaseless list-groups .DEFAULT: warning SHELL = /bin/sh @@ -10,14 +10,21 @@ all test: warning warning: # Use 'make help' to get usage - @echo "WARNING -- these tests are DESTRUCTIVE and will alter your wiki." + @echo "WARNING -- some tests are DESTRUCTIVE and will alter your wiki." @echo "DO NOT RUN THESE TESTS on a production wiki." @echo "" @echo "Until the default suites are made non-destructive, you can run" @echo "the destructive tests like so:" - @echo "" @echo " make destructive" @echo "" + @echo "Some tests are expected to be safe, you can run them with" + @echo " make safe" + @echo "" + @echo "You are recommended to run them with read-only credentials, though." + @echo "" + @echo "If you don't have a database running, you can still run" + @echo " make databaseless" + @echo "" destructive: phpunit @@ -39,6 +46,12 @@ parser: noparser: ${PU} --exclude-group Parser,Broken +safe: + ${PU} --exclude-group Broken,Destructive + +databaseless: + ${PU} --exclude-group Broken,Destructive,Database + list-groups: ${PU} --list-groups diff --git a/maintenance/tests/phpunit/bootstrap.php b/maintenance/tests/phpunit/bootstrap.php index d38652c2d6..81beb2bc4a 100644 --- a/maintenance/tests/phpunit/bootstrap.php +++ b/maintenance/tests/phpunit/bootstrap.php @@ -28,6 +28,18 @@ dependencies. EOF; } +global $wgLocalisationCacheConf, $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType; +global $wgMessageCache, $messageMemc, $wgUseDatabaseMessages, $wgMsgCacheExpiry; +$wgLocalisationCacheConf['storeClass'] = 'LCStore_Null'; +$wgMainCacheType = CACHE_NONE; +$wgMessageCacheType = CACHE_NONE; +$wgParserCacheType = CACHE_NONE; +$wgUseDatabaseMessages = false; # Set for future resets + +# The message cache was already created in Setup.php +$wgMessageCache = new StubObject( 'wgMessageCache', 'MessageCache', + array( $messageMemc, $wgUseDatabaseMessages, $wgMsgCacheExpiry ) ); + /* Classes */ abstract class MediaWikiTestSetup extends PHPUnit_Framework_TestCase { diff --git a/maintenance/tests/phpunit/includes/LanguageConverterTest.php b/maintenance/tests/phpunit/includes/LanguageConverterTest.php index 3eb83c9cac..f22bfc6078 100644 --- a/maintenance/tests/phpunit/includes/LanguageConverterTest.php +++ b/maintenance/tests/phpunit/includes/LanguageConverterTest.php @@ -62,6 +62,7 @@ class LanguageConverterTest extends PHPUnit_Framework_TestCase { $wgUser = new User; $wgUser->setId( 1 ); $wgUser->mDataLoaded = true; + $wgUser->mOptionsLoaded = true; $wgUser->setOption( 'variant', 'tg-latn' ); $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() ); @@ -74,6 +75,8 @@ class LanguageConverterTest extends PHPUnit_Framework_TestCase { $wgRequest->setVal( 'variant', 'tg' ); $wgUser = User::newFromId( "admin" ); $wgUser->setId( 1 ); + $wgUser->mDataLoaded = true; + $wgUser->mOptionsLoaded = true; $wgUser->setOption( 'variant', 'tg-latn' ); // The user's data is ignored // because the variant is set in the URL. $this->assertEquals( 'tg', $this->lc->getPreferredVariant() ); diff --git a/maintenance/tests/phpunit/includes/MessageTest.php b/maintenance/tests/phpunit/includes/MessageTest.php index 0c0114444d..65c368aa46 100644 --- a/maintenance/tests/phpunit/includes/MessageTest.php +++ b/maintenance/tests/phpunit/includes/MessageTest.php @@ -8,7 +8,7 @@ class MessageTest extends PHPUnit_Framework_TestCase { $wgLanguageCode = 'en'; # For mainpage to be 'Main Page' //Note that a Stub Object is not enough for this test $wgContLang = $wgLang = Language::factory( $wgLanguageCode ); - $wgMessageCache = new MessageCache( false, true, 3600 ); + $wgMessageCache = new MessageCache( false, false, 3600 ); } function testExists() { diff --git a/maintenance/tests/phpunit/includes/TitlePermissionTest.php b/maintenance/tests/phpunit/includes/TitlePermissionTest.php index 4e910dd8ad..d24359ff29 100644 --- a/maintenance/tests/phpunit/includes/TitlePermissionTest.php +++ b/maintenance/tests/phpunit/includes/TitlePermissionTest.php @@ -1,5 +1,9 @@ destroyInstance(); $wgContLang = Language::factory( 'en' ); } -- 2.20.1