Files
openswarm/scripts/run-phase-tests.js

36 lines
1.3 KiB
JavaScript

#!/usr/bin/env node
// One green button for every hermetic phase test in this plan. These run with no
// packaged build, no network, and no platform assumptions, so they are safe in
// CI and on any dev machine. Phase tests that REQUIRE a packaged artifact, CI,
// macOS hardware, or a real device fleet are intentionally not here (they can't
// be hermetic); see docs/RELEASE_CHECKLIST.md for those.
//
// node scripts/run-phase-tests.js
//
// Exit 0 only if every suite passes.
'use strict';
const path = require('path');
const { execFileSync } = require('child_process');
const SUITES = [
['Phase 0 boot timing + file count', 'perf/test-perf.js'],
['Phase 3 backend artifact smoke', 'ci/test-smoke-backend.js'],
['Phase 5a release promotion gate', 'release/test-verify-release.js'],
];
let failures = 0;
for (const [label, rel] of SUITES) {
process.stdout.write(`\n=== ${label} ===\n`);
try {
const out = execFileSync(process.execPath, [path.join(__dirname, rel)], { encoding: 'utf8' });
process.stdout.write(out.trim() + '\n');
} catch (e) {
failures++;
process.stdout.write((e.stdout || '') + (e.stderr || '') + ` -> SUITE FAILED (${rel})\n`);
}
}
process.stdout.write(`\n${failures === 0 ? 'ALL PHASE TEST SUITES PASSED' : failures + ' SUITE(S) FAILED'}\n`);
process.exit(failures === 0 ? 0 : 1);