2019-10-08 22:17:55 +00:00
|
|
|
"use strict";
|
2015-04-26 17:33:05 +00:00
|
|
|
|
2019-10-08 22:17:55 +00:00
|
|
|
module.exports = ( grunt ) => {
|
2019-03-04 17:30:51 +00:00
|
|
|
const fs = require( "fs" );
|
|
|
|
const spawnTest = require( "./lib/spawn_test.js" );
|
2023-07-10 17:14:08 +00:00
|
|
|
const nodeV16OrNewer = !/^v1[0-5]\./.test( process.version );
|
|
|
|
|
|
|
|
grunt.registerTask( "node_smoke_tests", function( moduleType, jQueryModuleSpecifier ) {
|
|
|
|
if (
|
|
|
|
( moduleType !== "commonjs" && moduleType !== "module" ) ||
|
|
|
|
!jQueryModuleSpecifier
|
|
|
|
) {
|
|
|
|
grunt.fatal( "Use `node_smoke_tests:commonjs:JQUERY` " +
|
|
|
|
"or `node_smoke_tests:module:JQUERY.\n" +
|
|
|
|
"JQUERY can be `jquery`, `jquery/slim` or a path to any of them." );
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( !nodeV16OrNewer ) {
|
|
|
|
grunt.log.writeln( "Old Node.js detected, running the task " +
|
|
|
|
`"node_smoke_tests:${ moduleType }:${ jQueryModuleSpecifier }" skipped...` );
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
const testsDir = `./test/node_smoke_tests/${ moduleType }`;
|
|
|
|
const nodeSmokeTests = [];
|
2015-04-26 17:33:05 +00:00
|
|
|
|
2023-07-10 17:14:08 +00:00
|
|
|
// 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( ( testFilePath ) =>
|
|
|
|
fs.statSync( `${ testsDir }/${ testFilePath }` ).isFile() &&
|
|
|
|
/\.[cm]?js$/.test( testFilePath )
|
|
|
|
)
|
|
|
|
.forEach( ( testFilePath ) => {
|
|
|
|
const taskName = `node_${ testFilePath.replace( /\.[cm]?js$/, "" ) }:${ moduleType }:${ jQueryModuleSpecifier }`;
|
|
|
|
|
|
|
|
grunt.registerTask( taskName, function() {
|
|
|
|
spawnTest( this.async(), `node "${ testsDir }/${
|
|
|
|
testFilePath }" ${ jQueryModuleSpecifier }` );
|
|
|
|
} );
|
|
|
|
|
|
|
|
nodeSmokeTests.push( taskName );
|
|
|
|
} );
|
2015-04-26 17:33:05 +00:00
|
|
|
|
2023-07-10 17:14:08 +00:00
|
|
|
grunt.task.run( nodeSmokeTests );
|
|
|
|
} );
|
2015-04-26 17:33:05 +00:00
|
|
|
};
|