diff --git a/includes/installer/WebInstallerOutput.php b/includes/installer/WebInstallerOutput.php index 314d9dd8fb2..f6183c935ed 100644 --- a/includes/installer/WebInstallerOutput.php +++ b/includes/installer/WebInstallerOutput.php @@ -148,6 +148,7 @@ class WebInstallerOutput { 'mw-config/config.css', ], ] ); + $module->setConfig( $resourceLoader->getConfig() ); // Based on: ResourceLoaderFileModule::getStyles (without the DB query) $styles = ResourceLoader::makeCombinedStyles( diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php index 401c0c1447c..df677451a9f 100644 --- a/includes/resourceloader/ResourceLoaderStartUpModule.php +++ b/includes/resourceloader/ResourceLoaderStartUpModule.php @@ -355,8 +355,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { $startupCode = file_get_contents( "$IP/resources/src/startup/startup.js" ); - // The files read here MUST be kept in sync with maintenance/jsduck/eg-iframe.html, - // and MUST be considered by 'fileHashes' in StartUpModule::getDefinitionSummary(). + // The files read here MUST be kept in sync with maintenance/jsduck/eg-iframe.html. $mwLoaderCode = file_get_contents( "$IP/resources/src/startup/mediawiki.js" ) . file_get_contents( "$IP/resources/src/startup/mediawiki.requestIdleCallback.js" ); if ( $conf->get( 'ResourceLoaderEnableJSProfiler' ) ) { diff --git a/tests/phpunit/ResourceLoaderTestCase.php b/tests/phpunit/ResourceLoaderTestCase.php index 4e2a8b552a7..b74e695617b 100644 --- a/tests/phpunit/ResourceLoaderTestCase.php +++ b/tests/phpunit/ResourceLoaderTestCase.php @@ -59,6 +59,12 @@ abstract class ResourceLoaderTestCase extends MediaWikiIntegrationTestCase { // For ResourceLoader::inDebugMode since it doesn't have context 'ResourceLoaderDebug' => true, + // For ResourceLoaderModule + 'ResourceLoaderValidateJS' => false, + + // For ResourceLoaderWikiModule + 'MaxRedirects' => 1, + // For ResourceLoaderSkinModule 'Logos' => false, 'Logo' => '/logo.png', @@ -69,6 +75,8 @@ abstract class ResourceLoaderTestCase extends MediaWikiIntegrationTestCase { 'ScriptPath' => '/w', 'Script' => '/w/index.php', 'LoadScript' => '/w/load.php', + 'EnableJavaScriptTest' => false, + 'ResourceLoaderEnableJSProfiler' => false, // For ResourceLoader::respond() - TODO: Inject somehow T32956 'UseFileCache' => false, diff --git a/tests/phpunit/includes/OutputPageTest.php b/tests/phpunit/includes/OutputPageTest.php index 91ac07282d9..cd464884725 100644 --- a/tests/phpunit/includes/OutputPageTest.php +++ b/tests/phpunit/includes/OutputPageTest.php @@ -2962,11 +2962,13 @@ class OutputPageTest extends MediaWikiIntegrationTestCase { * @covers ResourceLoaderSkinModule::getPreloadLinks * @covers ResourceLoaderSkinModule::getLogoPreloadlinks */ - public function testPreloadLinkHeaders( $config, $result ) { - $this->setMwGlobals( $config ); - $ctx = $this->getMockBuilder( ResourceLoaderContext::class ) - ->disableOriginalConstructor()->getMock(); + public function testPreloadLinkHeaders( $config, $result, $installPath = null ) { + if ( $installPath ) { + $this->setMwGlobals( [ 'IP' => $installPath ] ); + } + $ctx = $this->createMock( ResourceLoaderContext::class ); $module = new ResourceLoaderSkinModule(); + $module->setConfig( new HashConfig( $config + ResourceLoaderTestCase::getSettings() ) ); $this->assertEquals( [ $result ], $module->getHeaders( $ctx ) ); } @@ -2975,9 +2977,9 @@ class OutputPageTest extends MediaWikiIntegrationTestCase { return [ [ [ - 'wgResourceBasePath' => '/w', - 'wgLogo' => '/img/default.png', - 'wgLogos' => [ + 'ResourceBasePath' => '/w', + 'Logo' => '/img/default.png', + 'Logos' => [ '1.5x' => '/img/one-point-five.png', '2x' => '/img/two-x.png', ], @@ -2990,8 +2992,8 @@ class OutputPageTest extends MediaWikiIntegrationTestCase { ], [ [ - 'wgResourceBasePath' => '/w', - 'wgLogos' => [ + 'ResourceBasePath' => '/w', + 'Logos' => [ '1x' => '/img/default.png', ], ], @@ -2999,8 +3001,8 @@ class OutputPageTest extends MediaWikiIntegrationTestCase { ], [ [ - 'wgResourceBasePath' => '/w', - 'wgLogos' => [ + 'ResourceBasePath' => '/w', + 'Logos' => [ '1x' => '/img/default.png', '2x' => '/img/two-x.png', ], @@ -3011,8 +3013,8 @@ class OutputPageTest extends MediaWikiIntegrationTestCase { ], [ [ - 'wgResourceBasePath' => '/w', - 'wgLogos' => [ + 'ResourceBasePath' => '/w', + 'Logos' => [ '1x' => '/img/default.png', 'svg' => '/img/vector.svg', ], @@ -3022,14 +3024,14 @@ class OutputPageTest extends MediaWikiIntegrationTestCase { ], [ [ - 'wgResourceBasePath' => '/w', - 'wgLogos' => [ + 'ResourceBasePath' => '/w', + 'Logos' => [ '1x' => '/w/test.jpg', ], - 'wgUploadPath' => '/w/images', - 'IP' => dirname( __DIR__ ) . '/data/media', + 'UploadPath' => '/w/images', ], 'Link: ;rel=preload;as=image', + dirname( __DIR__ ) . '/data/media', ], ]; } diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderFileModuleTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderFileModuleTest.php index acced59cddc..df6f61ecb25 100644 --- a/tests/phpunit/includes/resourceloader/ResourceLoaderFileModuleTest.php +++ b/tests/phpunit/includes/resourceloader/ResourceLoaderFileModuleTest.php @@ -526,8 +526,10 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase { $context = $this->getResourceLoaderContext(); $moduleA = new ResourceLoaderFileTestModule( $a ); + $moduleA->setConfig( $context->getResourceLoader()->getConfig() ); $versionA = $moduleA->getVersionHash( $context ); $moduleB = new ResourceLoaderFileTestModule( $b ); + $moduleB->setConfig( $context->getResourceLoader()->getConfig() ); $versionB = $moduleB->getVersionHash( $context ); $this->assertSame( @@ -855,6 +857,7 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase { public function testGetScriptPackageFiles( $moduleDefinition, $expected, $contextOptions = [] ) { $module = new ResourceLoaderFileModule( $moduleDefinition ); $context = $this->getResourceLoaderContext( $contextOptions ); + $module->setConfig( $context->getResourceLoader()->getConfig() ); if ( isset( $moduleDefinition['name'] ) ) { $module->setName( $moduleDefinition['name'] ); } diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php index b476db23ff1..110eb026f79 100644 --- a/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php +++ b/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php @@ -90,6 +90,7 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase { 'mayValidateScript' => true, 'script' => "var a = 'this is';\n {\ninvalid" ] ); + $module->setConfig( $context->getResourceLoader()->getConfig() ); $this->assertEquals( 'mw.log.error(' . '"JavaScript parse error (scripts need to be valid ECMAScript 5): ' . diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderStartUpModuleTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderStartUpModuleTest.php index 3cc22e51564..70f52b18eaa 100644 --- a/tests/phpunit/includes/resourceloader/ResourceLoaderStartUpModuleTest.php +++ b/tests/phpunit/includes/resourceloader/ResourceLoaderStartUpModuleTest.php @@ -707,6 +707,7 @@ mw.loader.register([ } $rl->register( $case['modules'] ); $module = new ResourceLoaderStartUpModule(); + $module->setConfig( $rl->getConfig() ); $out = ltrim( $case['out'], "\n" ); // Disable log from getModuleRegistrations via MWExceptionHandler @@ -751,6 +752,7 @@ mw.loader.register([ $rl = $context->getResourceLoader(); $rl->register( $modules ); $module = new ResourceLoaderStartUpModule(); + $module->setConfig( $rl->getConfig() ); $out = 'mw.loader.addSource({"local":"/w/load.php"});' . "\n" . 'mw.loader.register([' . '["test.blank","{blankVer}"],' @@ -776,6 +778,7 @@ mw.loader.register([ $rl = $context->getResourceLoader(); $rl->register( $modules ); $module = new ResourceLoaderStartUpModule(); + $module->setConfig( $rl->getConfig() ); $out = 'mw.loader.addSource({ "local": "/w/load.php" @@ -805,32 +808,24 @@ mw.loader.register([ } /** - * @covers ResourceLoaderStartupModule::getDefinitionSummary + * @covers ResourceLoaderStartupModule */ public function testGetVersionHash_varyConfig() { $context = $this->getResourceLoaderContext(); - $this->setMwGlobals( 'wgArticlePath', '/w1' ); $module = new ResourceLoaderStartUpModule(); + $module->setConfig( $context->getResourceLoader()->getConfig() ); $version1 = $module->getVersionHash( $context ); - $module = new ResourceLoaderStartUpModule(); - $version2 = $module->getVersionHash( $context ); - $this->setMwGlobals( 'wgArticlePath', '/w3' ); $module = new ResourceLoaderStartUpModule(); - $version3 = $module->getVersionHash( $context ); + $module->setConfig( $context->getResourceLoader()->getConfig() ); + $version2 = $module->getVersionHash( $context ); $this->assertEquals( $version1, $version2, 'Deterministic version hash' ); - - $this->assertEquals( - $version1, - $version3, - 'Config change no longer impacts version hash' - ); } /** @@ -844,6 +839,7 @@ mw.loader.register([ 'test.b' => [ 'class' => ResourceLoaderTestModule::class ], ] ); $module = new ResourceLoaderStartUpModule(); + $module->setConfig( $rl1->getConfig() ); $version1 = $module->getVersionHash( $context1 ); $context2 = $this->getResourceLoaderContext(); @@ -853,6 +849,7 @@ mw.loader.register([ 'test.c' => [ 'class' => ResourceLoaderTestModule::class ], ] ); $module = new ResourceLoaderStartUpModule(); + $module->setConfig( $rl2->getConfig() ); $version2 = $module->getVersionHash( $context2 ); $context3 = $this->getResourceLoaderContext(); @@ -865,6 +862,7 @@ mw.loader.register([ ], ] ); $module = new ResourceLoaderStartUpModule(); + $module->setConfig( $rl3->getConfig() ); $version3 = $module->getVersionHash( $context3 ); // Module name *is* significant (T201686) @@ -894,6 +892,7 @@ mw.loader.register([ ], ] ); $module = new ResourceLoaderStartUpModule(); + $module->setConfig( $rl->getConfig() ); $version1 = $module->getVersionHash( $context ); $context = $this->getResourceLoaderContext(); @@ -905,6 +904,7 @@ mw.loader.register([ ], ] ); $module = new ResourceLoaderStartUpModule(); + $module->setConfig( $rl->getConfig() ); $version2 = $module->getVersionHash( $context ); // Dependencies *are* significant (T201686) diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderWikiModuleTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderWikiModuleTest.php index b08a2ad030b..a5314bdac41 100644 --- a/tests/phpunit/includes/resourceloader/ResourceLoaderWikiModuleTest.php +++ b/tests/phpunit/includes/resourceloader/ResourceLoaderWikiModuleTest.php @@ -377,12 +377,14 @@ class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase { 'MediaWiki:Common.css' => [ 'type' => 'style' ], ]; + $rl = new EmptyResourceLoader(); + $module = $this->getMockBuilder( ResourceLoaderWikiModule::class ) ->onlyMethods( [ 'getPages' ] ) ->getMock(); $module->method( 'getPages' )->willReturn( $pages ); + $module->setConfig( $rl->getConfig() ); - $rl = new EmptyResourceLoader(); $context = new DerivativeResourceLoaderContext( new ResourceLoaderContext( $rl, new FauxRequest() ) ); @@ -421,6 +423,7 @@ class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase { ->willReturn( [ 'MediaWiki:Redirect.js' => [ 'type' => 'script' ] ] ); + $module->setConfig( $context->getResourceLoader()->getConfig() ); $context->setContentOverrideCallback( static function ( PageIdentity $title ) { if ( $title->getDBkey() === 'Redirect.js' ) { $handler = new JavaScriptContentHandler();