X-Git-Url: https://git.cyclocoop.org/%242?a=blobdiff_plain;f=tests%2Fphpunit%2FMediaWikiTestCase.php;h=db1df5c04f77f199d9ea5b764f257460e3d599ad;hb=652e555d26cc49bc98464a3c06116de3aa45140f;hp=e0f44166d63ea97f633fa8d379c5c8fc03305a3e;hpb=5111bd2def4e63ecc8a2acbf468e5c39029f9efd;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/MediaWikiTestCase.php b/tests/phpunit/MediaWikiTestCase.php index e0f44166d6..db1df5c04f 100644 --- a/tests/phpunit/MediaWikiTestCase.php +++ b/tests/phpunit/MediaWikiTestCase.php @@ -81,6 +81,13 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase { */ private $mwGlobals = []; + /** + * Holds list of MediaWiki configuration settings to be unset in tearDown(). + * See also setMwGlobals(). + * @var array + */ + private $mwGlobalsToUnset = []; + /** * Holds original loggers which have been replaced by setLogger() * @var LoggerInterface[] @@ -535,7 +542,11 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase { foreach ( $this->mwGlobals as $key => $value ) { $GLOBALS[$key] = $value; } + foreach ( $this->mwGlobalsToUnset as $value ) { + unset( $GLOBALS[$value] ); + } $this->mwGlobals = []; + $this->mwGlobalsToUnset = []; $this->restoreLoggers(); if ( self::$serviceLocator && MediaWikiServices::getInstance() !== self::$serviceLocator ) { @@ -684,8 +695,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase { * * @param array|string $globalKeys Key to the global variable, or an array of keys. * - * @throws Exception When trying to stash an unset global - * * @note To allow changes to global variables to take effect on global service instances, * call overrideMwServices(). * @@ -700,9 +709,13 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase { // NOTE: make sure we only save the global once or a second call to // setMwGlobals() on the same global would override the original // value. - if ( !array_key_exists( $globalKey, $this->mwGlobals ) ) { + if ( + !array_key_exists( $globalKey, $this->mwGlobals ) && + !array_key_exists( $globalKey, $this->mwGlobalsToUnset ) + ) { if ( !array_key_exists( $globalKey, $GLOBALS ) ) { - throw new Exception( "Global with key {$globalKey} doesn't exist and cant be stashed" ); + $this->mwGlobalsToUnset[$globalKey] = $globalKey; + continue; } // NOTE: we serialize then unserialize the value in case it is an object // this stops any objects being passed by reference. We could use clone