42 lines
1.0 KiB
JavaScript
42 lines
1.0 KiB
JavaScript
|
|
const spawn = require('child_process').spawn;
|
|
const basename = require('path').basename;
|
|
|
|
const test_exes = process.argv.slice(2);
|
|
run_tests(test_exes);
|
|
|
|
function run_tests(test_exes, num = 0, fail_count = 0) {
|
|
if (test_exes.length <= num)
|
|
return done(test_exes, fail_count);
|
|
|
|
const test_exe = test_exes[num];
|
|
const test_name = basename(test_exe, '.exe');
|
|
|
|
console.log('(%d/%d) %s...', (num + 1), test_exes.length, test_name);
|
|
|
|
const child = spawn(test_exe, [], { encoding: 'utf8' });
|
|
|
|
let out = '';
|
|
child.stdout.on('data', (data) => out += data);
|
|
child.stderr.on('data', (data) => out += data);
|
|
|
|
child.on('exit', (code) => {
|
|
if (code === 0) {
|
|
console.log(' PASS')
|
|
} else {
|
|
console.log(' FAIL\n' + out);
|
|
fail_count++;
|
|
}
|
|
|
|
run_tests(test_exes, num + 1, fail_count);
|
|
});
|
|
}
|
|
|
|
function done(test_exes, fail_count) {
|
|
let pass_count = test_exes.length - fail_count;
|
|
console.log(' DONE - %d PASSED, %d FAILED', pass_count, fail_count);
|
|
|
|
process.exit(fail_count == 0 ? 0 : 1);
|
|
}
|
|
|