aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.eslintignore2
-rw-r--r--.eslintrc-node.json3
-rw-r--r--.gitignore2
-rw-r--r--Gruntfile.js4
-rw-r--r--build/tasks/node_smoke_tests.js24
-rw-r--r--package.json2
-rw-r--r--test/.eslintrc.json11
-rw-r--r--test/data/core/jquery-iterability-transpiled-es6.js14
-rw-r--r--test/data/core/jquery-iterability-transpiled.html14
-rw-r--r--test/node_smoke_tests/document_missing.js8
-rw-r--r--test/node_smoke_tests/document_passed.js16
-rw-r--r--test/node_smoke_tests/document_present_originally.js20
-rw-r--r--test/node_smoke_tests/iterable_with_symbol_polyfill.js11
-rw-r--r--test/node_smoke_tests/lib/ensure_global_not_created.js10
-rw-r--r--test/node_smoke_tests/lib/ensure_iterability_es6.js32
-rw-r--r--test/node_smoke_tests/lib/ensure_jquery.js6
-rw-r--r--test/promises_aplus_adapters/deferred.js25
-rw-r--r--test/promises_aplus_adapters/when.js78
-rw-r--r--test/unit/core.js11
19 files changed, 162 insertions, 131 deletions
diff --git a/.eslintignore b/.eslintignore
index 415493351..3ee82bba3 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -11,4 +11,4 @@ test/data/readywaitasset.js
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
diff --git a/.eslintrc-node.json b/.eslintrc-node.json
index 904e7ba94..589144272 100644
--- a/.eslintrc-node.json
+++ b/.eslintrc-node.json
@@ -4,10 +4,11 @@
"extends": "jquery",
"parserOptions": {
- "ecmaVersion": 5
+ "ecmaVersion": 2017
},
"env": {
+ "es6": true,
"node": true
}
}
diff --git a/.gitignore b/.gitignore
index 6b00bc2e2..c00c4ac7e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,4 +18,4 @@ npm-debug.log*
/node_modules
-/test/node_smoke_tests/lib/ensure_iterability.js
+/test/data/core/jquery-iterability-transpiled.js
diff --git a/Gruntfile.js b/Gruntfile.js
index ca82e8016..cf11680c4 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -42,8 +42,8 @@ module.exports = function( grunt ) {
},
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"
}
}
},
diff --git a/build/tasks/node_smoke_tests.js b/build/tasks/node_smoke_tests.js
index bd0a9150e..e3d69db88 100644
--- a/build/tasks/node_smoke_tests.js
+++ b/build/tasks/node_smoke_tests.js
@@ -1,11 +1,11 @@
-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
@@ -14,15 +14,15 @@ module.exports = function( grunt ) {
// 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 );
diff --git a/package.json b/package.json
index 43c8b6271..e09a4765e 100644
--- a/package.json
+++ b/package.json
@@ -45,7 +45,7 @@
"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",
diff --git a/test/.eslintrc.json b/test/.eslintrc.json
index c3924fbc6..2c724626f 100644
--- a/test/.eslintrc.json
+++ b/test/.eslintrc.json
@@ -51,5 +51,14 @@
// 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
+ }
+ }
+ ]
}
diff --git a/test/data/core/jquery-iterability-transpiled-es6.js b/test/data/core/jquery-iterability-transpiled-es6.js
new file mode 100644
index 000000000..0c3bda624
--- /dev/null
+++ b/test/data/core/jquery-iterability-transpiled-es6.js
@@ -0,0 +1,14 @@
+/* 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 );
+} );
diff --git a/test/data/core/jquery-iterability-transpiled.html b/test/data/core/jquery-iterability-transpiled.html
new file mode 100644
index 000000000..69ac18252
--- /dev/null
+++ b/test/data/core/jquery-iterability-transpiled.html
@@ -0,0 +1,14 @@
+<!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>
diff --git a/test/node_smoke_tests/document_missing.js b/test/node_smoke_tests/document_missing.js
index 348e9a4ef..0f6a3f78b 100644
--- a/test/node_smoke_tests/document_missing.js
+++ b/test/node_smoke_tests/document_missing.js
@@ -1,10 +1,10 @@
"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/ );
diff --git a/test/node_smoke_tests/document_passed.js b/test/node_smoke_tests/document_passed.js
index 5999cc744..b1154d3a3 100644
--- a/test/node_smoke_tests/document_passed.js
+++ b/test/node_smoke_tests/document_passed.js
@@ -1,14 +1,12 @@
"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 );
diff --git a/test/node_smoke_tests/document_present_originally.js b/test/node_smoke_tests/document_present_originally.js
index f75148708..89b0c7bd8 100644
--- a/test/node_smoke_tests/document_present_originally.js
+++ b/test/node_smoke_tests/document_present_originally.js
@@ -1,17 +1,15 @@
"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 );
diff --git a/test/node_smoke_tests/iterable_with_symbol_polyfill.js b/test/node_smoke_tests/iterable_with_symbol_polyfill.js
deleted file mode 100644
index 34701d691..000000000
--- a/test/node_smoke_tests/iterable_with_symbol_polyfill.js
+++ /dev/null
@@ -1,11 +0,0 @@
-"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" )();
diff --git a/test/node_smoke_tests/lib/ensure_global_not_created.js b/test/node_smoke_tests/lib/ensure_global_not_created.js
index 7cc83b541..95db62226 100644
--- a/test/node_smoke_tests/lib/ensure_global_not_created.js
+++ b/test/node_smoke_tests/lib/ensure_global_not_created.js
@@ -1,15 +1,15 @@
"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;
diff --git a/test/node_smoke_tests/lib/ensure_iterability_es6.js b/test/node_smoke_tests/lib/ensure_iterability_es6.js
index 4b30690a5..a948f1996 100644
--- a/test/node_smoke_tests/lib/ensure_iterability_es6.js
+++ b/test/node_smoke_tests/lib/ensure_iterability_es6.js
@@ -1,23 +1,25 @@
"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;
diff --git a/test/node_smoke_tests/lib/ensure_jquery.js b/test/node_smoke_tests/lib/ensure_jquery.js
index 0933a1d33..5b7c064f1 100644
--- a/test/node_smoke_tests/lib/ensure_jquery.js
+++ b/test/node_smoke_tests/lib/ensure_jquery.js
@@ -1,9 +1,11 @@
"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;
diff --git a/test/promises_aplus_adapters/deferred.js b/test/promises_aplus_adapters/deferred.js
index 31af16655..5e3ffe2d8 100644
--- a/test/promises_aplus_adapters/deferred.js
+++ b/test/promises_aplus_adapters/deferred.js
@@ -1,20 +1,17 @@
"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 )
};
-} );
+};
diff --git a/test/promises_aplus_adapters/when.js b/test/promises_aplus_adapters/when.js
index adde1a13a..3e945d475 100644
--- a/test/promises_aplus_adapters/when.js
+++ b/test/promises_aplus_adapters/when.js
@@ -1,49 +1,45 @@
"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 );
+ }
+ }
};
-} );
+};
diff --git a/test/unit/core.js b/test/unit/core.js
index 260038300..8205aa242 100644
--- a/test/unit/core.js
+++ b/test/unit/core.js
@@ -1425,6 +1425,17 @@ QUnit.test( "Iterability of jQuery objects (gh-1693)", function( assert ) {
}
} );
+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 );