aboutsummaryrefslogtreecommitdiffstats
path: root/build/tasks/node_smoke_tests.js
blob: 5452669dd787c7dd89295ecc12e95ce092164c00 (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
33
34
35
36
37
import fs from "node:fs/promises";
import util from "node:util";
import { exec as nodeExec } from "node:child_process";

const exec = util.promisify( nodeExec );

// 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.

async function runTests( { module } ) {
	const dir = "./test/node_smoke_tests";
	const files = await fs.readdir( dir, { withFileTypes: true } );
	const testFiles = files.filter( ( testFilePath ) => testFilePath.isFile() );

	if ( !testFiles.length ) {
		throw new Error( `No test files found for "${ module }"` );
	}

	await Promise.all(
		testFiles.map( ( testFile ) =>
			exec( `node "${ dir }/${ testFile.name }" ${ module }` )
		)
	);
	console.log( `Node smoke tests passed for "${ module }".` );
}

async function runDefaultTests() {
	await Promise.all( [
		runTests( { module: "./dist/jquery.js" } ),
		runTests( { module: "./dist/jquery.slim.js" } )
	] );
}

runDefaultTests();