mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-08-17 18:25:42 +02:00
36 lines
1.3 KiB
JavaScript
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);
|