aboutsummaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorMichał Gołębiowski <m.goleb@gmail.com>2015-04-26 19:33:05 +0200
committerMichał Gołębiowski <m.goleb@gmail.com>2015-04-27 22:44:47 +0200
commitab407258795bfa05756b009058757f8b42aa9c53 (patch)
treef96c0057a86c7d53deae69dd442ae55311263ee8 /build
parentff18d8e2060ae7c15c7694dc6bcbbeb9cbfbdaa4 (diff)
downloadjquery-ab407258795bfa05756b009058757f8b42aa9c53.tar.gz
jquery-ab407258795bfa05756b009058757f8b42aa9c53.zip
Core: Test all factory use cases from intro.js
There is a lot of logic in intro.js; now we test four cases: 1. (implicitly, via QUnit tests) A real browser with window being the global 2. Browserify where there are both global & window variables. 3. Node with jsdom where window is passed manually to the jQuery factory. 4. Pure Node with incorrect window passed; jQuery should throw then. Previously the second & fourth case was not tested and the third was tested in a way that interfered with the main test environment. We now also test if in the Browserify case we're not creating a jQuery global by default. Fixes gh-2181 Closes gh-2234
Diffstat (limited to 'build')
-rw-r--r--build/tasks/lib/spawn_test.js16
-rw-r--r--build/tasks/node_smoke_test.js16
-rw-r--r--build/tasks/node_smoke_tests.js31
-rw-r--r--build/tasks/promises-aplus-tests.js20
-rw-r--r--build/tasks/promises_aplus_tests.js13
5 files changed, 60 insertions, 36 deletions
diff --git a/build/tasks/lib/spawn_test.js b/build/tasks/lib/spawn_test.js
new file mode 100644
index 000000000..6c4596a3d
--- /dev/null
+++ b/build/tasks/lib/spawn_test.js
@@ -0,0 +1,16 @@
+/* jshint node: true */
+
+"use strict";
+
+// Run Node with provided parameters: the first one being the Grunt
+// done function and latter ones being files to be tested.
+// See the comment in ../node_smoke_tests.js for more information.
+module.exports = function spawnTest( done ) {
+ var testPaths = [].slice.call( arguments, 1 ),
+ spawn = require( "win-spawn" );
+
+ spawn( "node", testPaths, { stdio: "inherit" } )
+ .on( "close", function( code ) {
+ done( code === 0 );
+ } );
+} ;
diff --git a/build/tasks/node_smoke_test.js b/build/tasks/node_smoke_test.js
deleted file mode 100644
index f39872521..000000000
--- a/build/tasks/node_smoke_test.js
+++ /dev/null
@@ -1,16 +0,0 @@
-module.exports = function( grunt ) {
-
- "use strict";
-
- grunt.registerTask( "node_smoke_test", function() {
- var done = this.async();
- require( "jsdom" ).env( "", function( errors, window ) {
- if ( errors ) {
- console.error( errors );
- done( false );
- }
- require( "../.." )( window );
- done();
- });
- });
-};
diff --git a/build/tasks/node_smoke_tests.js b/build/tasks/node_smoke_tests.js
new file mode 100644
index 000000000..2a741c57a
--- /dev/null
+++ b/build/tasks/node_smoke_tests.js
@@ -0,0 +1,31 @@
+module.exports = function( grunt ) {
+
+ "use strict";
+
+ var fs = require( "fs" ),
+ spawnTest = require( "./lib/spawn_test.js" ),
+ testsDir = "./test/node_smoke_tests/",
+ 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
+ // on success or another one on failure. Spawning in sub-processes is
+ // important so that the tests & the main process don't interfere with
+ // 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();
+ } )
+ .forEach( function( testFilePath ) {
+ var taskName = "node_" + testFilePath.replace( /\.js$/, "" );
+
+ grunt.registerTask( taskName, function() {
+ spawnTest( this.async(), "test/node_smoke_tests/" + testFilePath );
+ } );
+
+ nodeSmokeTests.push( taskName );
+ } );
+
+ grunt.registerTask( "node_smoke_tests", nodeSmokeTests );
+};
diff --git a/build/tasks/promises-aplus-tests.js b/build/tasks/promises-aplus-tests.js
deleted file mode 100644
index 458ae1be0..000000000
--- a/build/tasks/promises-aplus-tests.js
+++ /dev/null
@@ -1,20 +0,0 @@
-module.exports = function( grunt ) {
-
- "use strict";
-
- var spawn = require( "child_process" ).spawn;
-
- grunt.registerTask( "promises-aplus-tests", function() {
- var done = this.async();
- spawn(
- "node",
- [
- "./node_modules/.bin/promises-aplus-tests",
- "test/promises-aplus-adapter.js"
- ],
- { stdio: "inherit" }
- ).on( "close", function( code ) {
- done( code === 0 );
- });
- });
-};
diff --git a/build/tasks/promises_aplus_tests.js b/build/tasks/promises_aplus_tests.js
new file mode 100644
index 000000000..3e770a079
--- /dev/null
+++ b/build/tasks/promises_aplus_tests.js
@@ -0,0 +1,13 @@
+module.exports = function( grunt ) {
+
+ "use strict";
+
+ var spawnTest = require( "./lib/spawn_test.js" );
+
+ grunt.registerTask( "promises_aplus_tests", function() {
+ spawnTest( this.async(),
+ "./node_modules/.bin/promises-aplus-tests",
+ "test/promises_aplus_adapter.js"
+ );
+ } );
+};