diff options
author | Yaco <franco@reevo.org> | 2020-06-04 11:01:00 -0300 |
---|---|---|
committer | Yaco <franco@reevo.org> | 2020-06-04 11:01:00 -0300 |
commit | fc7369835258467bf97eb64f184b93691f9a9fd5 (patch) | |
tree | daabd60089d2dd76d9f5fb416b005fbe159c799d /www/wiki/tests/common/TestSetup.php |
first commit
Diffstat (limited to 'www/wiki/tests/common/TestSetup.php')
-rw-r--r-- | www/wiki/tests/common/TestSetup.php | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/www/wiki/tests/common/TestSetup.php b/www/wiki/tests/common/TestSetup.php new file mode 100644 index 00000000..c176a67f --- /dev/null +++ b/www/wiki/tests/common/TestSetup.php @@ -0,0 +1,113 @@ +<?php + +/** + * Common code for test environment initialisation and teardown + */ +class TestSetup { + /** + * This should be called before Setup.php, e.g. from the finalSetup() method + * of a Maintenance subclass + */ + public static function applyInitialConfig() { + global $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType, $wgMainWANCache; + global $wgMainStash; + global $wgLanguageConverterCacheType, $wgUseDatabaseMessages; + global $wgLocaltimezone, $wgLocalisationCacheConf; + global $wgSearchType; + global $wgDevelopmentWarnings; + global $wgSessionProviders, $wgSessionPbkdf2Iterations; + global $wgJobTypeConf; + global $wgAuthManagerConfig, $wgAuth; + + // wfWarn should cause tests to fail + $wgDevelopmentWarnings = true; + + // Make sure all caches and stashes are either disabled or use + // in-process cache only to prevent tests from using any preconfigured + // cache meant for the local wiki from outside the test run. + // See also MediaWikiTestCase::run() which mocks CACHE_DB and APC. + + // Disabled in DefaultSettings, override local settings + $wgMainWANCache = + $wgMainCacheType = CACHE_NONE; + // Uses CACHE_ANYTHING in DefaultSettings, use hash instead of db + $wgMessageCacheType = + $wgParserCacheType = + $wgSessionCacheType = + $wgLanguageConverterCacheType = 'hash'; + // Uses db-replicated in DefaultSettings + $wgMainStash = 'hash'; + // Use memory job queue + $wgJobTypeConf = [ + 'default' => [ 'class' => JobQueueMemory::class, 'order' => 'fifo' ], + ]; + + $wgUseDatabaseMessages = false; # Set for future resets + + // Assume UTC for testing purposes + $wgLocaltimezone = 'UTC'; + + $wgLocalisationCacheConf['storeClass'] = LCStoreNull::class; + + // Do not bother updating search tables + $wgSearchType = SearchEngineDummy::class; + + // Generic MediaWiki\Session\SessionManager configuration for tests + // We use CookieSessionProvider because things might be expecting + // cookies to show up in a FauxRequest somewhere. + $wgSessionProviders = [ + [ + 'class' => MediaWiki\Session\CookieSessionProvider::class, + 'args' => [ [ + 'priority' => 30, + 'callUserSetCookiesHook' => true, + ] ], + ], + ]; + + // Single-iteration PBKDF2 session secret derivation, for speed. + $wgSessionPbkdf2Iterations = 1; + + // Generic AuthManager configuration for testing + $wgAuthManagerConfig = [ + 'preauth' => [], + 'primaryauth' => [ + [ + 'class' => MediaWiki\Auth\TemporaryPasswordPrimaryAuthenticationProvider::class, + 'args' => [ [ + 'authoritative' => false, + ] ], + ], + [ + 'class' => MediaWiki\Auth\LocalPasswordPrimaryAuthenticationProvider::class, + 'args' => [ [ + 'authoritative' => true, + ] ], + ], + ], + 'secondaryauth' => [], + ]; + $wgAuth = new MediaWiki\Auth\AuthManagerAuthPlugin(); + + // T46192 Do not attempt to send a real e-mail + Hooks::clear( 'AlternateUserMailer' ); + Hooks::register( + 'AlternateUserMailer', + function () { + return false; + } + ); + // xdebug's default of 100 is too low for MediaWiki + ini_set( 'xdebug.max_nesting_level', 1000 ); + + // Bug T116683 serialize_precision of 100 + // may break testing against floating point values + // treated with PHP's serialize() + ini_set( 'serialize_precision', 17 ); + + // TODO: we should call MediaWikiTestCase::prepareServices( new GlobalVarConfig() ) here. + // But PHPUnit may not be loaded yet, so we have to wait until just + // before PHPUnit_TextUI_Command::main() is executed. + } + +} |