2023-07-27 15:24:49 +00:00
|
|
|
import fs from "node:fs/promises";
|
|
|
|
import util from "node:util";
|
|
|
|
import { exec as nodeExec } from "node:child_process";
|
2015-04-26 17:33:05 +00:00
|
|
|
|
2023-07-27 15:24:49 +00:00
|
|
|
const exec = util.promisify( nodeExec );
|
2023-09-20 22:18:42 +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.
|
|
|
|
|
|
|
|
async function runTests( { module } ) {
|
|
|
|
const dir = "./test/node_smoke_tests";
|
2024-03-10 16:19:15 +00:00
|
|
|
const files = await fs.readdir( dir, { withFileTypes: true } );
|
2023-09-20 22:18:42 +00:00
|
|
|
const testFiles = files.filter( ( testFilePath ) => testFilePath.isFile() );
|
|
|
|
|
|
|
|
if ( !testFiles.length ) {
|
2023-11-01 23:48:05 +00:00
|
|
|
throw new Error( `No test files found for "${ module }"` );
|
2023-09-20 22:18:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
await Promise.all(
|
|
|
|
testFiles.map( ( testFile ) =>
|
2023-11-01 23:48:05 +00:00
|
|
|
exec( `node "${ dir }/${ testFile.name }" ${ module }` )
|
2023-09-20 22:18:42 +00:00
|
|
|
)
|
|
|
|
);
|
2023-11-01 23:48:05 +00:00
|
|
|
console.log( `Node smoke tests passed for "${ module }".` );
|
2023-09-20 22:18:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
async function runDefaultTests() {
|
|
|
|
await Promise.all( [
|
|
|
|
runTests( { module: "./dist/jquery.js" } ),
|
|
|
|
runTests( { module: "./dist/jquery.slim.js" } )
|
|
|
|
] );
|
|
|
|
}
|
|
|
|
|
|
|
|
runDefaultTests();
|