From 3f10aa34e626bada433a68a1797c51163c320c24 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Wed, 26 Jul 2017 18:53:37 -0700 Subject: [PATCH] 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 --- .../ResourceLoaderFileModule.php | 6 ++++++ tests/common/TestsAutoLoader.php | 1 + tests/phpunit/ResourceLoaderTestCase.php | 16 ++++++++++++++++ .../ResourceLoaderFileModuleTest.php | 19 +++++++++++++++++++ 4 files changed, 42 insertions(+) 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' + ); + } } -- 2.20.1