46 lines
960 B
JavaScript
46 lines
960 B
JavaScript
#!/usr/bin/env node
|
|
/**
|
|
* Lanceur des tests unitaires JS.
|
|
*
|
|
* Utilise le runner natif de Node (node:test), aucune dépendance npm.
|
|
* Usage : node tests/js/run.js
|
|
*/
|
|
'use strict';
|
|
|
|
const { run } = require('node:test');
|
|
const { spec } = require('node:test/reporters');
|
|
const fs = require('node:fs');
|
|
const path = require('node:path');
|
|
|
|
const testDir = __dirname;
|
|
const files = fs
|
|
.readdirSync(testDir)
|
|
.filter((name) => name.endsWith('-test.js'))
|
|
.sort()
|
|
.map((name) => path.join(testDir, name));
|
|
|
|
if (files.length === 0) {
|
|
console.error('Aucun fichier *-test.js trouvé dans ' + testDir);
|
|
process.exit(1);
|
|
}
|
|
|
|
const stream = run({ files });
|
|
|
|
let failures = 0;
|
|
stream.on('test:fail', () => {
|
|
failures += 1;
|
|
});
|
|
|
|
stream.on('error', (err) => {
|
|
console.error(err);
|
|
process.exitCode = 1;
|
|
});
|
|
|
|
stream.compose(spec).pipe(process.stdout);
|
|
|
|
stream.on('end', () => {
|
|
if (failures > 0) {
|
|
process.exitCode = 1;
|
|
}
|
|
});
|