From: Timo Tijhof Date: Thu, 27 Jul 2017 01:53:37 +0000 (-0700) Subject: resourceloader: Include lessVars in FileModule definition summary X-Git-Tag: 1.31.0-rc.0~2572^2 X-Git-Url: https://git.cyclocoop.org/admin/%7B%24admin_url%7Dmembres/Zigzagzogzagzig?a=commitdiff_plain;h=3f10aa34e626bada433a68a1797c51163c320c24;p=lhc%2Fweb%2Fwiklou.git resourceloader: Include lessVars in FileModule definition summary This already worked as expected for any module that uses the new enableModuleContentVersion model, but for the majority of file modules this is not yet the case for performance reasons. As such, make sure lessVars are included in our manual tracking. Include it conditionally to avoid changing the array for other modules, which would needlessly invalidate their cache. Bug: T171809 Change-Id: Ib250068e0ecfc29a09ca33c23bef901ee0482bf2 --- diff --git a/includes/resourceloader/ResourceLoaderFileModule.php b/includes/resourceloader/ResourceLoaderFileModule.php index 79b8e79d08..4675191884 100644 --- a/includes/resourceloader/ResourceLoaderFileModule.php +++ b/includes/resourceloader/ResourceLoaderFileModule.php @@ -580,6 +580,12 @@ class ResourceLoaderFileModule extends ResourceLoaderModule { 'fileHashes' => $this->getFileHashes( $context ), 'messageBlob' => $this->getMessageBlob( $context ), ]; + + $lessVars = $this->getLessVars( $context ); + if ( $lessVars ) { + $summary[] = [ 'lessVars' => $lessVars ]; + } + return $summary; } diff --git a/tests/common/TestsAutoLoader.php b/tests/common/TestsAutoLoader.php index 3de3ba7063..9b9ea6d7d3 100644 --- a/tests/common/TestsAutoLoader.php +++ b/tests/common/TestsAutoLoader.php @@ -56,6 +56,7 @@ $wgAutoloadClasses += [ 'MediaWikiLangTestCase' => "$testDir/phpunit/MediaWikiLangTestCase.php", 'ResourceLoaderTestCase' => "$testDir/phpunit/ResourceLoaderTestCase.php", 'ResourceLoaderTestModule' => "$testDir/phpunit/ResourceLoaderTestCase.php", + 'ResourceLoaderFileTestModule' => "$testDir/phpunit/ResourceLoaderTestCase.php", 'ResourceLoaderFileModuleTestModule' => "$testDir/phpunit/ResourceLoaderTestCase.php", 'EmptyResourceLoader' => "$testDir/phpunit/ResourceLoaderTestCase.php", 'TestUser' => "$testDir/phpunit/includes/TestUser.php", diff --git a/tests/phpunit/ResourceLoaderTestCase.php b/tests/phpunit/ResourceLoaderTestCase.php index d8f89fb6bc..f75cc2294c 100644 --- a/tests/phpunit/ResourceLoaderTestCase.php +++ b/tests/phpunit/ResourceLoaderTestCase.php @@ -153,6 +153,22 @@ class ResourceLoaderTestModule extends ResourceLoaderModule { } } +class ResourceLoaderFileTestModule extends ResourceLoaderFileModule { + protected $lessVars = []; + + public function __construct( $options = [], $test = [] ) { + parent::__construct( $options ); + + foreach ( $test as $key => $value ) { + $this->$key = $value; + } + } + + public function getLessVars( ResourceLoaderContext $context ) { + return $this->lessVars; + } +} + class ResourceLoaderFileModuleTestModule extends ResourceLoaderFileModule { } diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderFileModuleTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderFileModuleTest.php index ded56e9201..e82bab72df 100644 --- a/tests/phpunit/includes/resourceloader/ResourceLoaderFileModuleTest.php +++ b/tests/phpunit/includes/resourceloader/ResourceLoaderFileModuleTest.php @@ -331,4 +331,23 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase { 'Leading BOM removed when concatenating files' ); } + + /** + * @covers ResourceLoaderFileModule::getDefinitionSummary + */ + public function testGetVersionHash() { + $context = $this->getResourceLoaderContext(); + + // Less variables + $module = new ResourceLoaderFileTestModule(); + $version = $module->getVersionHash( $context ); + $module = new ResourceLoaderFileTestModule( [], [ + 'lessVars' => [ 'key' => 'value' ], + ] ); + $this->assertNotEquals( + $version, + $module->getVersionHash( $context ), + 'Using less variables is significant' + ); + } }