From 9878abd0c30b1832324e029430634cfdb18e7276 Mon Sep 17 00:00:00 2001 From: Kosta Harlan Date: Fri, 6 Sep 2019 11:43:39 +0200 Subject: [PATCH] Unit tests: Whitelist global so LoggerFactory doesn't explode Bug: T87781 Change-Id: I78ef16ac3b9efa7059905c44c234065aa68db680 --- tests/phpunit/MediaWikiUnitTestCase.php | 29 ++++++++++++++++++++----- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/tests/phpunit/MediaWikiUnitTestCase.php b/tests/phpunit/MediaWikiUnitTestCase.php index 3f876ae4aa..76e8f7df9e 100644 --- a/tests/phpunit/MediaWikiUnitTestCase.php +++ b/tests/phpunit/MediaWikiUnitTestCase.php @@ -37,6 +37,25 @@ abstract class MediaWikiUnitTestCase extends TestCase { private static $originalGlobals; private static $unitGlobals; + /** + * Whitelist of globals to allow in MediaWikiUnitTestCase. + * + * Please, keep this list to the bare minimum. + * + * @return string[] + */ + private static function getGlobalsWhitelist() { + return [ + // The autoloader may change between bootstrap and the first test, + // so (lazily) capture these here instead. + 'wgAutoloadClasses', + 'wgAutoloadLocalClasses', + // Need for LoggerFactory. Default is NullSpi. + 'wgMWLoggerDefaultSpi', + 'wgAutoloadAttemptLowercase' + ]; + } + public static function setUpBeforeClass() { parent::setUpBeforeClass(); @@ -56,12 +75,10 @@ abstract class MediaWikiUnitTestCase extends TestCase { } self::$unitGlobals =& TestSetup::$bootstrapGlobals; - // The autoloader may change between bootstrap and the first test, - // so (lazily) capture these here instead. - self::$unitGlobals['wgAutoloadClasses'] =& $GLOBALS['wgAutoloadClasses']; - self::$unitGlobals['wgAutoloadLocalClasses'] =& $GLOBALS['wgAutoloadLocalClasses']; - // This value should always be true. - self::$unitGlobals['wgAutoloadAttemptLowercase'] = true; + + foreach ( self::getGlobalsWhitelist() as $global ) { + self::$unitGlobals[ $global ] =& $GLOBALS[ $global ]; + } // Would be nice if we coud simply replace $GLOBALS as a whole, // but unsetting or re-assigning that breaks the reference of this magic -- 2.20.1