},
teardown: function () {
mw.loader.store.enabled = false;
+ // Teardown for StringSet shim test
+ if ( this.nativeSet ) {
+ window.Set = this.nativeSet;
+ mw.redefineFallbacksForTest();
+ }
}
} ) );
function isCssImportApplied() {
// Trigger reflow, repaint, redraw, whatever (cross-browser)
- var x = $element.css( 'height' );
- x = el.innerHTML;
+ $element.css( 'height' );
+ // eslint-disable-next-line no-unused-expressions
+ el.innerHTML;
el.className = el.className;
- x = document.documentElement.clientHeight;
+ // eslint-disable-next-line no-unused-expressions
+ document.documentElement.clientHeight;
return $element.css( prop ) === val;
}
} );
} );
- QUnit.test( '.using() Error: Circular dependency', function ( assert ) {
+ // Covers mw.loader#sortDependencies (with native Set if available)
+ QUnit.test( '.using() Error: Circular dependency [StringSet default]', function ( assert ) {
var done = assert.async();
mw.loader.register( [
.always( done );
} );
+ // @covers mw.loader#sortDependencies (with fallback shim)
+ QUnit.test( '.using() Error: Circular dependency [StringSet shim]', function ( assert ) {
+ var done = assert.async();
+
+ if ( !window.Set ) {
+ assert.expect( 0 );
+ done();
+ return;
+ }
+
+ this.nativeSet = window.Set;
+ window.Set = undefined;
+ mw.redefineFallbacksForTest();
+
+ mw.loader.register( [
+ [ 'test.shim.circle1', '0', [ 'test.shim.circle2' ] ],
+ [ 'test.shim.circle2', '0', [ 'test.shim.circle3' ] ],
+ [ 'test.shim.circle3', '0', [ 'test.shim.circle1' ] ]
+ ] );
+ mw.loader.using( 'test.shim.circle3' ).then(
+ function done() {
+ assert.ok( false, 'Unexpected resolution, expected error.' );
+ },
+ function fail( e ) {
+ assert.ok( /Circular/.test( String( e ) ), 'Detect circular dependency' );
+ }
+ )
+ .always( done );
+ } );
+
QUnit.test( '.load() - Error: Circular dependency', function ( assert ) {
mw.loader.register( [
[ 'test.circleA', '0', [ 'test.circleB' ] ],
assert.ok( true, 'QUnit expected() count dummy' );
},
function ( e, dependencies ) {
- assert.strictEqual( $.isArray( dependencies ), true, 'Expected array of dependencies' );
+ assert.strictEqual( Array.isArray( dependencies ), true, 'Expected array of dependencies' );
assert.deepEqual( dependencies, [ 'test.module7' ], 'Error callback called with module test.module7' );
}
);
assert.ok( true, 'QUnit expected() count dummy' );
},
function ( e, dependencies ) {
- assert.strictEqual( $.isArray( dependencies ), true, 'Expected array of dependencies' );
+ assert.strictEqual( Array.isArray( dependencies ), true, 'Expected array of dependencies' );
dependencies.sort();
assert.deepEqual(
dependencies,