diff options
author | Michał Gołębiowski <m.goleb@gmail.com> | 2015-04-26 19:33:05 +0200 |
---|---|---|
committer | Michał Gołębiowski <m.goleb@gmail.com> | 2015-04-27 22:44:47 +0200 |
commit | ab407258795bfa05756b009058757f8b42aa9c53 (patch) | |
tree | f96c0057a86c7d53deae69dd442ae55311263ee8 /build | |
parent | ff18d8e2060ae7c15c7694dc6bcbbeb9cbfbdaa4 (diff) | |
download | jquery-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.js | 16 | ||||
-rw-r--r-- | build/tasks/node_smoke_test.js | 16 | ||||
-rw-r--r-- | build/tasks/node_smoke_tests.js | 31 | ||||
-rw-r--r-- | build/tasks/promises-aplus-tests.js | 20 | ||||
-rw-r--r-- | build/tasks/promises_aplus_tests.js | 13 |
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" + ); + } ); +}; |