qunit: Move modules exclusively for $wgEnableJavaScriptTest to test registry
authorTimo Tijhof <krinklemail@gmail.com>
Wed, 5 Feb 2014 05:17:48 +0000 (21:17 -0800)
committerTimo Tijhof <krinklemail@gmail.com>
Wed, 5 Feb 2014 20:32:37 +0000 (12:32 -0800)
These modules should only be loaded when $wgEnableJavaScriptTest
is true. Move these modules to the registry that is only activated
in that context and rename the modules to be namespaced under 'test.'
so that there is no mistake when referencing these that they are
not regularly available.

Change-Id: I21e69f50b006904b12fe9f79c196c903ebff4661

includes/resourceloader/ResourceLoader.php
includes/specials/SpecialJavaScriptTest.php
resources/Resources.php
tests/qunit/QUnitTestResources.php
tests/qunit/data/testrunner.js

index b6c9cec..557c1f6 100644 (file)
@@ -289,7 +289,7 @@ class ResourceLoader {
 
                // Get core test suites
                $testModules = array();
-               $testModules['qunit'] = include "$IP/tests/qunit/QUnitTestResources.php";
+               $testModules['qunit'] = array();
                // Get other test suites (e.g. from extensions)
                wfRunHooks( 'ResourceLoaderTestModules', array( &$testModules, &$this ) );
 
@@ -300,9 +300,11 @@ class ResourceLoader {
                        // on document-ready, it will run once and finish. If some tests arrive
                        // later (possibly after QUnit has already finished) they will be ignored.
                        $module['position'] = 'top';
-                       $module['dependencies'][] = 'mediawiki.tests.qunit.testrunner';
+                       $module['dependencies'][] = 'test.mediawiki.qunit.testrunner';
                }
 
+               $testModules['qunit'] = ( include "$IP/tests/qunit/QUnitTestResources.php" ) + $testModules['qunit'];
+
                foreach ( $testModules as $id => $names ) {
                        // Register test modules
                        $this->register( $testModules[$id] );
index 57d314f..7982d5c 100644 (file)
@@ -139,7 +139,7 @@ class SpecialJavaScriptTest extends SpecialPage {
 
                $out = $this->getOutput();
 
-               $out->addModules( 'mediawiki.tests.qunit.testrunner' );
+               $out->addModules( 'test.mediawiki.qunit.testrunner' );
                $qunitTestModules = $out->getResourceLoader()->getTestModuleNames( 'qunit' );
                $out->addModules( $qunitTestModules );
 
index 394392c..a02459f 100644 (file)
@@ -1183,21 +1183,6 @@ return array(
                'styles' => 'resources/mediawiki.special/mediawiki.special.version.css',
        ),
 
-       /* MediaWiki Tests */
-
-       'mediawiki.tests.qunit.testrunner' => array(
-               'scripts' => 'tests/qunit/data/testrunner.js',
-               'dependencies' => array(
-                       'jquery.getAttrs',
-                       'jquery.qunit',
-                       'jquery.qunit.completenessTest',
-                       'mediawiki.page.startup',
-                       'mediawiki.page.ready',
-               ),
-               'position' => 'top',
-               'targets' => array( 'desktop', 'mobile' ),
-       ),
-
        /* MediaWiki Legacy */
 
        'mediawiki.legacy.ajax' => array(
index 0ec4932..bd240eb 100644 (file)
@@ -1,10 +1,32 @@
 <?php
 
+/* Modules registered when $wgEnableJavaScriptTest is true */
+
 return array(
 
-       /* Test suites for MediaWiki core modules */
+       /* Utilities */
+
+       'test.mediawiki.qunit.testrunner' => array(
+               'scripts' => array(
+                       'tests/qunit/data/testrunner.js',
+               ),
+               'dependencies' => array(
+                       'jquery.getAttrs',
+                       'jquery.qunit',
+                       'jquery.qunit.completenessTest',
+                       'mediawiki.page.ready',
+                       'mediawiki.page.startup',
+               ),
+               'position' => 'top',
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       /*
+               Test suites for MediaWiki core modules
+               These must have a dependency on test.mediawiki.qunit.testrunner!
+       */
 
-       'mediawiki.tests.qunit.suites' => array(
+       'test.mediawiki.qunit.suites' => array(
                'scripts' => array(
                        'tests/qunit/suites/resources/startup.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.autoEllipsis.test.js',
@@ -66,6 +88,7 @@ return array(
                        'mediawiki.special.recentchanges',
                        'mediawiki.language',
                        'mediawiki.cldr',
+                       'test.mediawiki.qunit.testrunner',
                ),
        )
 );
index 1a2bfa1..5bdd37f 100644 (file)
         * initializations defined above in this file.
         */
        envExecCount = 0;
-       QUnit.module( 'mediawiki.tests.qunit.testrunner', QUnit.newMwEnvironment( {
+       QUnit.module( 'test.mediawiki.qunit.testrunner', QUnit.newMwEnvironment( {
                setup: function () {
                        envExecCount += 1;
                        this.mwHtmlLive = mw.html;
 
        } );
 
-       QUnit.module( 'mediawiki.tests.qunit.testrunner-after', QUnit.newMwEnvironment() );
+       QUnit.module( 'test.mediawiki.qunit.testrunner-after', QUnit.newMwEnvironment() );
 
        QUnit.test( 'Teardown', 3, function ( assert ) {
                assert.equal( mw.html.escape( '<' ), '&lt;', 'extra teardown() callback was ran.' );