From 44f3f068df0f35e7b276afbb6347537ed82e2683 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Fri, 17 Feb 2017 15:21:59 -0800 Subject: [PATCH] resourceloader: Consistent stylesheet order for debug and non-debug Previously, style modules were only in a predictable order for production mode. In debug mode, the order was determined by order in which modules were added to queue at run time. This made it sometimes hard to debug, especially when dealing with gadgets that apply in a different order among each other. Change-Id: I4bff0c91d127e4ad8015cd8c1775220fe460cbc3 --- includes/resourceloader/ResourceLoaderClientHtml.php | 6 ++++-- .../resourceloader/ResourceLoaderClientHtmlTest.php | 10 ++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/includes/resourceloader/ResourceLoaderClientHtml.php b/includes/resourceloader/ResourceLoaderClientHtml.php index ef2827c9b6..29f8cfe66d 100644 --- a/includes/resourceloader/ResourceLoaderClientHtml.php +++ b/includes/resourceloader/ResourceLoaderClientHtml.php @@ -365,7 +365,11 @@ class ResourceLoaderClientHtml { $rl = $mainContext->getResourceLoader(); $chunks = []; + // Sort module names so requests are more uniform + sort( $modules ); + if ( $mainContext->getDebug() && count( $modules ) > 1 ) { + $chunks = []; // Recursively call us for every item foreach ( $modules as $name ) { @@ -374,8 +378,6 @@ class ResourceLoaderClientHtml { return new WrappedStringList( "\n", $chunks ); } - // Sort module names so requests are more uniform - sort( $modules ); // Create keyed-by-source and then keyed-by-group list of module objects from modules list $sortedModules = []; foreach ( $modules as $name ) { diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderClientHtmlTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderClientHtmlTest.php index 528c3220e8..2db3c1692c 100644 --- a/tests/phpunit/includes/resourceloader/ResourceLoaderClientHtmlTest.php +++ b/tests/phpunit/includes/resourceloader/ResourceLoaderClientHtmlTest.php @@ -246,8 +246,14 @@ class ResourceLoaderClientHtmlTest extends PHPUnit_Framework_TestCase { 'context' => [ 'debug' => true ], 'modules' => [ 'test.styles.pure', 'test.styles.mixed' ], 'only' => ResourceLoaderModule::TYPE_STYLES, - 'output' => '' . "\n" - . '', + 'output' => '' . "\n" + . '', + ], + [ + 'context' => [ 'debug' => false ], + 'modules' => [ 'test.styles.pure', 'test.styles.mixed' ], + 'only' => ResourceLoaderModule::TYPE_STYLES, + 'output' => '', ], [ 'context' => [], -- 2.20.1