68 lines
2.2 KiB
TypeScript
68 lines
2.2 KiB
TypeScript
import path from 'node:path';
|
|
import { spawn } from 'node:child_process';
|
|
|
|
const suite = [
|
|
'scripts/testTradeExecutorLifecycle.ts',
|
|
'scripts/testLifecycleRegressions.ts',
|
|
'scripts/testOrderStatusSyncRegressions.ts',
|
|
'scripts/testSupabaseOrderPersistenceRegressions.ts',
|
|
'scripts/testFailureInjection.ts',
|
|
'src/scripts/verifyWebsocketContract.ts',
|
|
'scripts/testManualTraderCapitalGuard.ts',
|
|
'scripts/testSupabaseTradeHistorySourceFallback.ts',
|
|
'scripts/testStateMergeCoverage.ts',
|
|
'scripts/testBacktestIsolation.ts',
|
|
'scripts/testCoreModuleCoverage.ts',
|
|
'scripts/testConnectorAndAiCoverage.ts'
|
|
];
|
|
|
|
const runScript = (relativePath: string): Promise<number> =>
|
|
new Promise((resolve) => {
|
|
const scriptPath = path.resolve(process.cwd(), relativePath);
|
|
const child = spawn(
|
|
process.execPath,
|
|
['--loader', 'ts-node/esm', scriptPath],
|
|
{
|
|
stdio: 'inherit',
|
|
shell: false,
|
|
env: {
|
|
...process.env,
|
|
TS_NODE_TRANSPILE_ONLY: '1'
|
|
}
|
|
}
|
|
);
|
|
|
|
child.on('close', (code) => resolve(code ?? 1));
|
|
child.on('error', () => resolve(1));
|
|
});
|
|
|
|
const main = async () => {
|
|
console.log('\n[coverage-suite] Running coverage-friendly regression suite...\n');
|
|
const failed: string[] = [];
|
|
|
|
for (const item of suite) {
|
|
console.log(`\n[coverage-suite] ▶ ${item}`);
|
|
const code = await runScript(item);
|
|
if (code === 0) {
|
|
console.log(`[coverage-suite] ✅ ${item} passed`);
|
|
} else {
|
|
failed.push(item);
|
|
console.log(`[coverage-suite] ❌ ${item} failed with exit code ${code}`);
|
|
}
|
|
}
|
|
|
|
console.log('\n[coverage-suite] Summary');
|
|
console.log(`[coverage-suite] Passed: ${suite.length - failed.length}`);
|
|
console.log(`[coverage-suite] Failed: ${failed.length}`);
|
|
if (failed.length > 0) {
|
|
console.log('[coverage-suite] Failed scripts:');
|
|
failed.forEach((item) => console.log(`- ${item}`));
|
|
process.exit(1);
|
|
}
|
|
};
|
|
|
|
main().catch((error) => {
|
|
console.error('[coverage-suite] Unhandled error', error);
|
|
process.exit(1);
|
|
});
|