test/data/readywaitloader.js
test/data/support/csp.js
test/data/support/getComputedSupport.js
-test/node_smoke_tests/lib/ensure_iterability.js
+test/data/core/jquery-iterability-transpiled.js
"extends": "jquery",
"parserOptions": {
- "ecmaVersion": 5
+ "ecmaVersion": 2017
},
"env": {
+ "es6": true,
"node": true
}
}
/node_modules
-/test/node_smoke_tests/lib/ensure_iterability.js
+/test/data/core/jquery-iterability-transpiled.js
},
nodeSmokeTests: {
files: {
- "test/node_smoke_tests/lib/ensure_iterability.js":
- "test/node_smoke_tests/lib/ensure_iterability_es6.js"
+ "test/data/core/jquery-iterability-transpiled.js":
+ "test/data/core/jquery-iterability-transpiled-es6.js"
}
}
},
-module.exports = function( grunt ) {
+module.exports = ( grunt ) => {
"use strict";
- var fs = require( "fs" ),
- spawnTest = require( "./lib/spawn_test.js" ),
- testsDir = "./test/node_smoke_tests/",
- nodeSmokeTests = [ "babel:nodeSmokeTests" ];
+ const fs = require( "fs" );
+ const spawnTest = require( "./lib/spawn_test.js" );
+ const testsDir = "./test/node_smoke_tests/";
+ const nodeSmokeTests = [ "babel:nodeSmokeTests" ];
// Fire up all tests defined in test/node_smoke_tests/*.js in spawned sub-processes.
// All the files under test/node_smoke_tests/*.js are supposed to exit with 0 code
// each other, e.g. so that they don't share the require cache.
fs.readdirSync( testsDir )
- .filter( function( testFilePath ) {
- return fs.statSync( testsDir + testFilePath ).isFile() &&
- /\.js$/.test( testFilePath );
- } )
- .forEach( function( testFilePath ) {
- var taskName = "node_" + testFilePath.replace( /\.js$/, "" );
+ .filter( ( testFilePath ) =>
+ fs.statSync( testsDir + testFilePath ).isFile() &&
+ /\.js$/.test( testFilePath )
+ )
+ .forEach( ( testFilePath ) => {
+ const taskName = `node_${ testFilePath.replace( /\.js$/, "" ) }`;
grunt.registerTask( taskName, function() {
- spawnTest( this.async(), "node \"test/node_smoke_tests/" + testFilePath + "\"" );
+ spawnTest( this.async(), `node "test/node_smoke_tests/${ testFilePath }"` );
} );
nodeSmokeTests.push( taskName );
"gzip-js": "0.3.2",
"husky": "1.3.1",
"insight": "0.10.1",
- "jsdom": "5.6.1",
+ "jsdom": "13.2.0",
"karma": "4.0.0",
"karma-browserstack-launcher": "1.4.0",
"karma-chrome-launcher": "2.2.0",
// Not really too many - waiting for autofix features for these rules
"lines-around-comment": "off",
"dot-notation": "off"
- }
+ },
+
+ "overrides": [
+ {
+ "files": ["data/core/jquery-iterability-transpiled-es6.js"],
+ "parserOptions": {
+ "ecmaVersion": 2015
+ }
+ }
+ ]
}
--- /dev/null
+/* global startIframeTest */
+
+jQuery( function() {
+ "use strict";
+
+ var elem = jQuery( "<div></div><span></span><a></a>" );
+ var result = "";
+ var i;
+ for ( i of elem ) {
+ result += i.nodeName;
+ }
+
+ startIframeTest( result );
+} );
--- /dev/null
+<!DOCTYPE html>
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>jQuery objects transpiled iterability test page</title>
+ <script src="../../../node_modules/core-js/client/core.min.js"></script>
+ <script src="../../jquery.js"></script>
+ <script src="../iframeTest.js"></script>
+ <script src="jquery-iterability-transpiled.js"></script>
+</head>
+<body>
+ <p>jQuery objects transpiled iterability test page</p>
+</body>
+</html>
"use strict";
-var assert = require( "assert" ),
- ensureGlobalNotCreated = require( "./lib/ensure_global_not_created" ),
- jQueryFactory = require( "../../dist/jquery.js" );
+const assert = require( "assert" );
+const ensureGlobalNotCreated = require( "./lib/ensure_global_not_created" );
+const jQueryFactory = require( "../../dist/jquery.js" );
-assert.throws( function() {
+assert.throws( () => {
jQueryFactory( {} );
}, /jQuery requires a window with a document/ );
"use strict";
-var assert = require( "assert" );
+const { JSDOM } = require( "jsdom" );
-require( "jsdom" ).env( "", function( errors, window ) {
- assert.ifError( errors );
+const { window } = new JSDOM( "" );
- var ensureJQuery = require( "./lib/ensure_jquery" ),
- ensureGlobalNotCreated = require( "./lib/ensure_global_not_created" ),
- jQuery = require( "../../dist/jquery.js" )( window );
+const ensureJQuery = require( "./lib/ensure_jquery" );
+const ensureGlobalNotCreated = require( "./lib/ensure_global_not_created" );
+const jQuery = require( "../../dist/jquery.js" )( window );
- ensureJQuery( jQuery );
- ensureGlobalNotCreated( module.exports );
-} );
+ensureJQuery( jQuery );
+ensureGlobalNotCreated( module.exports );
"use strict";
-var assert = require( "assert" );
+const { JSDOM } = require( "jsdom" );
-require( "jsdom" ).env( "", function( errors, window ) {
- assert.ifError( errors );
+const { window } = new JSDOM( "" );
- // Pretend the window is a global.
- global.window = window;
+// Pretend the window is a global.
+global.window = window;
- var ensureJQuery = require( "./lib/ensure_jquery" ),
- ensureGlobalNotCreated = require( "./lib/ensure_global_not_created" ),
- jQuery = require( "../../dist/jquery.js" );
+const ensureJQuery = require( "./lib/ensure_jquery" );
+const ensureGlobalNotCreated = require( "./lib/ensure_global_not_created" );
+const jQuery = require( "../../dist/jquery.js" );
- ensureJQuery( jQuery );
- ensureGlobalNotCreated( module.exports, window );
-} );
+ensureJQuery( jQuery );
+ensureGlobalNotCreated( module.exports, window );
+++ /dev/null
-"use strict";
-
-var assert = require( "assert" );
-
-delete global.Symbol;
-require( "core-js" );
-
-assert.strictEqual( typeof Symbol, "function", "Expected Symbol to be a function" );
-assert.notEqual( typeof Symbol.iterator, "symbol", "Expected Symbol.iterator to be polyfilled" );
-
-require( "./lib/ensure_iterability" )();
"use strict";
-var assert = require( "assert" );
+const assert = require( "assert" );
// Ensure the jQuery property on global/window/module.exports/etc. was not
// created in a CommonJS environment.
// `global` is always checked in addition to passed parameters.
-module.exports = function ensureGlobalNotCreated() {
- var args = [].slice.call( arguments ).concat( global );
-
- args.forEach( function( object ) {
+const ensureGlobalNotCreated = ( ...args ) => {
+ [ ...args, global ].forEach( function( object ) {
assert.strictEqual( object.jQuery, undefined,
"A jQuery global was created in a CommonJS environment." );
} );
};
+
+module.exports = ensureGlobalNotCreated;
"use strict";
-var assert = require( "assert" );
+const assert = require( "assert" );
-module.exports = function ensureIterability() {
- require( "jsdom" ).env( "", function( errors, window ) {
- assert.ifError( errors );
+const ensureIterability = () => {
+ const { JSDOM } = require( "jsdom" );
- var i,
- ensureJQuery = require( "./ensure_jquery" ),
- jQuery = require( "../../../dist/jquery.js" )( window ),
- elem = jQuery( "<div></div><span></span><a></a>" ),
- result = "";
+ const { window } = new JSDOM( "" );
- ensureJQuery( jQuery );
+ let i;
+ const ensureJQuery = require( "./ensure_jquery" );
+ const jQuery = require( "../../../dist/jquery.js" )( window );
+ const elem = jQuery( "<div></div><span></span><a></a>" );
+ let result = "";
- for ( i of elem ) {
- result += i.nodeName;
- }
+ ensureJQuery( jQuery );
- assert.strictEqual( result, "DIVSPANA", "for-of works on jQuery objects" );
- } );
+ for ( i of elem ) {
+ result += i.nodeName;
+ }
+
+ assert.strictEqual( result, "DIVSPANA", "for-of works on jQuery objects" );
};
+
+module.exports = ensureIterability;
"use strict";
-var assert = require( "assert" );
+const assert = require( "assert" );
// Check if the object we got is the jQuery object by invoking a basic API.
-module.exports = function ensureJQuery( jQuery ) {
+const ensureJQuery = ( jQuery ) => {
assert( /^jQuery/.test( jQuery.expando ),
"jQuery.expando was not detected, the jQuery bootstrap process has failed" );
};
+
+module.exports = ensureJQuery;
"use strict";
-require( "jsdom" ).env( "", function( errors, window ) {
- if ( errors ) {
- console.error( errors );
- return;
- }
+const { JSDOM } = require( "jsdom" );
- var jQuery = require( "../../" )( window );
+const { window } = new JSDOM( "" );
- module.exports.deferred = function() {
- var deferred = jQuery.Deferred();
+const jQuery = require( "../../" )( window );
- return {
- promise: deferred.promise(),
- resolve: deferred.resolve.bind( deferred ),
- reject: deferred.reject.bind( deferred )
- };
+module.exports.deferred = () => {
+ const deferred = jQuery.Deferred();
+
+ return {
+ promise: deferred.promise(),
+ resolve: deferred.resolve.bind( deferred ),
+ reject: deferred.reject.bind( deferred )
};
-} );
+};
"use strict";
-require( "jsdom" ).env( "", function( errors, window ) {
- if ( errors ) {
- console.error( errors );
- return;
- }
+const { JSDOM } = require( "jsdom" );
- var jQuery = require( "../../" )( window );
+const { window } = new JSDOM( "" );
- module.exports.deferred = function() {
- var adopted, promised,
- obj = {
- resolve: function() {
- if ( !adopted ) {
- adopted = jQuery.when.apply( jQuery, arguments );
- if ( promised ) {
- adopted.then( promised.resolve, promised.reject );
- }
- }
- return adopted;
- },
- reject: function( value ) {
- if ( !adopted ) {
- adopted = jQuery.when( jQuery.Deferred().reject( value ) );
- if ( promised ) {
- adopted.then( promised.resolve, promised.reject );
- }
- }
- return adopted;
- },
+const jQuery = require( "../../" )( window );
- // A manually-constructed thenable that works even if calls precede resolve/reject
- promise: {
- then: function() {
- if ( !adopted ) {
- if ( !promised ) {
- promised = jQuery.Deferred();
- }
- return promised.then.apply( promised, arguments );
- }
- return adopted.then.apply( adopted, arguments );
- }
+module.exports.deferred = () => {
+ let adopted, promised;
+
+ return {
+ resolve: function() {
+ if ( !adopted ) {
+ adopted = jQuery.when.apply( jQuery, arguments );
+ if ( promised ) {
+ adopted.then( promised.resolve, promised.reject );
}
- };
+ }
+ return adopted;
+ },
+ reject: function( value ) {
+ if ( !adopted ) {
+ adopted = jQuery.when( jQuery.Deferred().reject( value ) );
+ if ( promised ) {
+ adopted.then( promised.resolve, promised.reject );
+ }
+ }
+ return adopted;
+ },
- return obj;
+ // A manually-constructed thenable that works even if calls precede resolve/reject
+ promise: {
+ then: function() {
+ if ( !adopted ) {
+ if ( !promised ) {
+ promised = jQuery.Deferred();
+ }
+ return promised.then.apply( promised, arguments );
+ }
+ return adopted.then.apply( adopted, arguments );
+ }
+ }
};
-} );
+};
}
} );
+testIframe(
+ "Iterability of jQuery objects with Symbol polyfill (gh-1693)",
+ "core/jquery-iterability-transpiled.html",
+ function( assert, jQuery, window, document, testString ) {
+ assert.expect( 1 );
+
+ assert.strictEqual( testString, "DIVSPANA",
+ "for-of works on jQuery objects with Symbol polyfilled" );
+ }
+);
+
QUnit[ jQuery.Deferred ? "test" : "skip" ]( "jQuery.readyException (original)", function( assert ) {
assert.expect( 1 );