$this->setMwGlobals( 'wgResourceLoaderSources', $case['sources'] );
}
- $extraQuery = isset( $case['extraQuery'] ) ? $case['extraQuery'] : [];
+ $extraQuery = $case['extraQuery'] ?? [];
$context = $this->getResourceLoaderContext( $extraQuery );
$rl = $context->getResourceLoader();
$rl->register( $case['modules'] );
);
}
+ /**
+ * @covers ResourceLoaderStartupModule::getDefinitionSummary
+ */
+ public function testGetVersionHash_varyConfig() {
+ $context = $this->getResourceLoaderContext();
+
+ $this->setMwGlobals( 'wgArticlePath', '/w1' );
+ $module = new ResourceLoaderStartupModule();
+ $version1 = $module->getVersionHash( $context );
+ $module = new ResourceLoaderStartupModule();
+ $version2 = $module->getVersionHash( $context );
+ $this->setMwGlobals( 'wgArticlePath', '/w3' );
+ $module = new ResourceLoaderStartupModule();
+ $version3 = $module->getVersionHash( $context );
+
+ $this->assertEquals(
+ $version1,
+ $version2,
+ 'Deterministic version hash'
+ );
+
+ $this->assertNotEquals(
+ $version1,
+ $version3,
+ 'Config change impacts version hash'
+ );
+ }
+
+ /**
+ * @covers ResourceLoaderStartupModule::getAllModuleHashes
+ * @covers ResourceLoaderStartupModule::getDefinitionSummary
+ */
+ public function testGetVersionHash_varyModule() {
+ $context1 = $this->getResourceLoaderContext();
+ $rl1 = $context1->getResourceLoader();
+ $rl1->register( [
+ 'test.a' => new ResourceLoaderTestModule(),
+ 'test.b' => new ResourceLoaderTestModule(),
+ ] );
+ $module = new ResourceLoaderStartupModule();
+ $version1 = $module->getVersionHash( $context1 );
+
+ $context2 = $this->getResourceLoaderContext();
+ $rl2 = $context2->getResourceLoader();
+ $rl2->register( [
+ 'test.b' => new ResourceLoaderTestModule(),
+ 'test.c' => new ResourceLoaderTestModule(),
+ ] );
+ $module = new ResourceLoaderStartupModule();
+ $version2 = $module->getVersionHash( $context2 );
+
+ $context3 = $this->getResourceLoaderContext();
+ $rl3 = $context3->getResourceLoader();
+ $rl3->register( [
+ 'test.a' => new ResourceLoaderTestModule(),
+ 'test.b' => new ResourceLoaderTestModule( [ 'script' => 'different' ] ),
+ ] );
+ $module = new ResourceLoaderStartupModule();
+ $version3 = $module->getVersionHash( $context3 );
+
+ $this->assertEquals(
+ $version1,
+ $version2,
+ 'Module name is insignificant'
+ );
+
+ $this->assertNotEquals(
+ $version1,
+ $version3,
+ 'Hash change of any module impacts startup hash'
+ );
+ }
+
}