| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #!/usr/bin/env node
- import fs from 'fs';
- import path from 'path';
- import { spawnSync } from 'child_process';
- const cwd = process.cwd();
- const args = process.argv.slice(2);
- const matchIdx = args.indexOf('--match');
- const matchText = matchIdx >= 0 ? String(args[matchIdx + 1] || '').trim() : '';
- const listOnly = args.includes('--list');
- let tests = fs.readdirSync(cwd)
- .filter((file) => /^test-.*\.js$/.test(file))
- .sort();
- if (matchText) {
- tests = tests.filter((file) => file.includes(matchText));
- }
- if (tests.length === 0) {
- console.error(`No tests found${matchText ? ` for --match ${matchText}` : ''}.`);
- process.exit(1);
- }
- if (listOnly) {
- for (const file of tests) console.log(file);
- process.exit(0);
- }
- const failures = [];
- for (const file of tests) {
- console.log(`\n### ${file}`);
- const result = spawnSync(process.execPath, [path.join(cwd, file)], {
- cwd,
- encoding: 'utf8',
- });
- if (result.stdout) process.stdout.write(result.stdout);
- if (result.stderr) process.stderr.write(result.stderr);
- if (result.status !== 0) failures.push(file);
- }
- console.log(`\nSUMMARY total=${tests.length} failed=${failures.length}`);
- if (failures.length) {
- for (const file of failures) console.log(file);
- process.exit(1);
- }
|