resourceloader: Inverse hasOwn() check to fix require in debug mode
authorjdlrobson <jdlrobson@gmail.com>
Fri, 19 Feb 2016 22:36:50 +0000 (14:36 -0800)
committerTimo Tijhof <krinklemail@gmail.com>
Fri, 11 Mar 2016 00:00:49 +0000 (00:00 +0000)
Follows-up 94c1162400.

Makes require and module work in debug mode.

Bug: T108655
Change-Id: I68ea05a31d5bde530e5e80aeff076df6b9924bac

resources/src/mediawiki/mediawiki.js
tests/qunit/data/defineCallMwLoaderTestCallback.js [new file with mode: 0644]
tests/qunit/data/requireCallMwLoaderTestCallback.js [new file with mode: 0644]
tests/qunit/suites/resources/mediawiki/mediawiki.test.js

index f282db6..4aad2ba 100644 (file)
                                var r = $.Deferred();
 
                                pendingRequests.push( function () {
-                                       if ( moduleName && !hasOwn.call( registry, moduleName ) ) {
+                                       if ( moduleName && hasOwn.call( registry, moduleName ) ) {
                                                window.require = mw.loader.require;
                                                window.module = registry[ moduleName ].module;
                                        }
diff --git a/tests/qunit/data/defineCallMwLoaderTestCallback.js b/tests/qunit/data/defineCallMwLoaderTestCallback.js
new file mode 100644 (file)
index 0000000..afd886c
--- /dev/null
@@ -0,0 +1 @@
+module.exports = 'Define worked.';
diff --git a/tests/qunit/data/requireCallMwLoaderTestCallback.js b/tests/qunit/data/requireCallMwLoaderTestCallback.js
new file mode 100644 (file)
index 0000000..8bc087b
--- /dev/null
@@ -0,0 +1,2 @@
+var x = require( 'test.require.define' );
+module.exports = 'Require worked.' + x;
index ce4ea8b..dd43c55 100644 (file)
                }, /is not loaded/, 'Requesting non-existent modules throws error.' );
        } );
 
+       QUnit.asyncTest( 'mw.loader require in debug mode', 1, function ( assert ) {
+               var path = mw.config.get( 'wgScriptPath' );
+               mw.loader.register( [
+                       [ 'test.require.define', '0' ],
+                       [ 'test.require.callback', '0', [ 'test.require.define' ] ]
+               ] );
+               mw.loader.implement( 'test.require.callback', [ QUnit.fixurl( path + '/tests/qunit/data/requireCallMwLoaderTestCallback.js' ) ] );
+               mw.loader.implement( 'test.require.define', [ QUnit.fixurl( path + '/tests/qunit/data/defineCallMwLoaderTestCallback.js' ) ] );
+
+               mw.loader.using( 'test.require.callback', function () {
+                       QUnit.start();
+                       var exported = mw.loader.require( 'test.require.callback' );
+                       assert.strictEqual( exported, 'Require worked.Define worked.',
+                               'module.exports worked in debug mode' );
+               }, function () {
+                       QUnit.start();
+                       assert.ok( false, 'Error callback fired while loader.using "test.require.callback" module' );
+               } );
+       } );
+
 }( mediaWiki, jQuery ) );