From d82eec166fc19e821cca501bf350d348ef9f5da4 Mon Sep 17 00:00:00 2001 From: Legoktm Date: Thu, 10 Nov 2016 05:48:33 +0000 Subject: [PATCH] Revert "Don't construct SpecialPages twice" This causes issues with transcluded special pages. This reverts commit ba40a63c0ee23daec4886a3e7da62b061639f19c. Bug: T132545 Change-Id: I14d5300d6b90766532924f9d1e52c4230e2d9772 --- includes/specialpage/SpecialPageFactory.php | 7 ------- .../specialpage/SpecialPageFactoryTest.php | 18 ++++++++++-------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/includes/specialpage/SpecialPageFactory.php b/includes/specialpage/SpecialPageFactory.php index 725c4fc581..8ce480e123 100644 --- a/includes/specialpage/SpecialPageFactory.php +++ b/includes/specialpage/SpecialPageFactory.php @@ -182,7 +182,6 @@ class SpecialPageFactory { private static $list; private static $aliases; - private static $pageObjectCache = []; /** * Reset the internal list of special pages. Useful when changing $wgSpecialPages after @@ -191,7 +190,6 @@ class SpecialPageFactory { public static function resetList() { self::$list = null; self::$aliases = null; - self::$pageObjectCache = []; } /** @@ -375,10 +373,6 @@ class SpecialPageFactory { public static function getPage( $name ) { list( $realName, /*...*/ ) = self::resolveAlias( $name ); - if ( isset( self::$pageObjectCache[$realName] ) ) { - return self::$pageObjectCache[$realName]; - } - $specialPageList = self::getPageList(); if ( isset( $specialPageList[$realName] ) ) { @@ -406,7 +400,6 @@ class SpecialPageFactory { $page = null; } - self::$pageObjectCache[$realName] = $page; if ( $page instanceof SpecialPage ) { return $page; } else { diff --git a/tests/phpunit/includes/specialpage/SpecialPageFactoryTest.php b/tests/phpunit/includes/specialpage/SpecialPageFactoryTest.php index 3d407fbc32..534cf9baf7 100644 --- a/tests/phpunit/includes/specialpage/SpecialPageFactoryTest.php +++ b/tests/phpunit/includes/specialpage/SpecialPageFactoryTest.php @@ -55,17 +55,19 @@ class SpecialPageFactoryTest extends MediaWikiTestCase { $specialPageTestHelper = new SpecialPageTestHelper(); return [ - 'class name' => [ 'SpecialAllPages' ], + 'class name' => [ 'SpecialAllPages', false ], 'closure' => [ function () { return new SpecialAllPages(); - } ], - 'function' => [ [ $this, 'newSpecialAllPages' ] ], - 'callback string' => [ 'SpecialPageTestHelper::newSpecialAllPages' ], + }, false ], + 'function' => [ [ $this, 'newSpecialAllPages' ], false ], + 'callback string' => [ 'SpecialPageTestHelper::newSpecialAllPages', false ], 'callback with object' => [ - [ $specialPageTestHelper, 'newSpecialAllPages' ] + [ $specialPageTestHelper, 'newSpecialAllPages' ], + false ], 'callback array' => [ - [ 'SpecialPageTestHelper', 'newSpecialAllPages' ] + [ 'SpecialPageTestHelper', 'newSpecialAllPages' ], + false ] ]; } @@ -74,7 +76,7 @@ class SpecialPageFactoryTest extends MediaWikiTestCase { * @covers SpecialPageFactory::getPage * @dataProvider specialPageProvider */ - public function testGetPage( $spec ) { + public function testGetPage( $spec, $shouldReuseInstance ) { $this->mergeMwGlobalArrayValue( 'wgSpecialPages', [ 'testdummy' => $spec ] ); SpecialPageFactory::resetList(); @@ -82,7 +84,7 @@ class SpecialPageFactoryTest extends MediaWikiTestCase { $this->assertInstanceOf( 'SpecialPage', $page ); $page2 = SpecialPageFactory::getPage( 'testdummy' ); - $this->assertEquals( true, $page2 === $page, "Should re-use instance:" ); + $this->assertEquals( $shouldReuseInstance, $page2 === $page, "Should re-use instance:" ); } /** -- 2.20.1