aboutsummaryrefslogtreecommitdiffstats
path: root/build/tasks/node_smoke_tests.js
blob: 9334516d9ec516c3ba3d0c5347a27bba1f520ab0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
module.exports = function( grunt ) {

	"use strict";

	var fs = require( "fs" ),
		spawnTest = require( "./lib/spawn_test.js" ),
		testsDir = "./test/node_smoke_tests/",
		nodeSmokeTests = [ "jsdom", "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
	// 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() &&
				/\.js$/.test( testFilePath );
		} )
		.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 );
};