Source commit: be1f654ae8de7d5eeb2005b4e1a05bf1ebf3124f Public tree identity: sha256:ab53679496be4be7d1e02bc00723072774d1a3f87e10cc56558a752f28f6abb1
69 lines
3.8 KiB
JavaScript
Executable file
69 lines
3.8 KiB
JavaScript
Executable file
#!/usr/bin/env node
|
|
|
|
const assert = require("assert");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
const repo = path.resolve(__dirname, "..");
|
|
|
|
function read(relativePath) {
|
|
return fs.readFileSync(path.join(repo, relativePath), "utf8");
|
|
}
|
|
|
|
function expect(source, name, pattern) {
|
|
assert.match(source, pattern, `missing public local demo evidence: ${name}`);
|
|
}
|
|
|
|
const publicAcceptance = read("scripts/acceptance-public.sh");
|
|
const publicSplit = read("scripts/verify-public-split.sh");
|
|
const cliInstall = read("scripts/cli-install-smoke.js");
|
|
const flagship = read("scripts/flagship-demo-smoke.js");
|
|
const cliLocalRun = read("scripts/cli-local-run-smoke.js");
|
|
const nodeAttach = read("scripts/node-attach-smoke.js");
|
|
const vscodeExtension = read("scripts/vscode-extension-smoke.js");
|
|
const vscodeF5 = read("scripts/vscode-f5-smoke.js");
|
|
const artifactDownload = read("scripts/artifact-download-smoke.js");
|
|
const artifactExport = read("scripts/artifact-export-smoke.js");
|
|
|
|
for (const script of [publicAcceptance, publicSplit]) {
|
|
for (const smoke of [
|
|
"scripts/cli-install-smoke.js",
|
|
"scripts/flagship-demo-smoke.js",
|
|
"scripts/cli-local-run-smoke.js",
|
|
"scripts/node-attach-smoke.js",
|
|
"scripts/vscode-extension-smoke.js",
|
|
"scripts/vscode-f5-smoke.js",
|
|
"scripts/artifact-download-smoke.js",
|
|
"scripts/artifact-export-smoke.js",
|
|
]) {
|
|
assert(script.includes(`node ${smoke}`), `public demo gate must run ${smoke}`);
|
|
}
|
|
}
|
|
|
|
expect(cliInstall, "CLI install from project path", /cargo[\s\S]*install[\s\S]*crates\/clusterflux-cli/);
|
|
expect(cliInstall, "CLI install smoke targets flagship project", /const project = path\.join\(repo, "examples\/launch-build-demo"\)/);
|
|
expect(cliInstall, "installed CLI inspects flagship project", /installedBin[\s\S]*\["bundle", "inspect", "--project", project, "--json"\]/);
|
|
|
|
expect(flagship, "flagship project source is Rust workflow", /examples\/launch-build-demo[\s\S]*src\/build\.rs/);
|
|
expect(flagship, "flagship source avoids local machine assumptions", /forbiddenSourceAssumptions/);
|
|
expect(flagship, "flagship cargo test runs", /cargo[\s\S]*test[\s\S]*launch-build-demo/);
|
|
|
|
expect(cliLocalRun, "local run starts node process", /cli_process_started_node_process[\s\S]*true/);
|
|
expect(cliLocalRun, "local run records real task events", /events\.events\.length >= 4[\s\S]*prepare_source[\s\S]*compile_linux[\s\S]*package_release/);
|
|
expect(cliLocalRun, "local run records artifact metadata", /events\.events\.some\(\(event\) => event\.artifact_path\)/);
|
|
|
|
expect(nodeAttach, "Linux node attach creates enrollment grant", /create_node_enrollment_grant/);
|
|
expect(nodeAttach, "Linux node attach uses enrollment exchange", /used_enrollment_exchange[\s\S]*true/);
|
|
expect(nodeAttach, "attached Linux node proves signed enrollment", /used_enrollment_exchange[\s\S]*signedNodeHeartbeat/);
|
|
|
|
expect(vscodeExtension, "extension contributes debugger", /contributes\.debuggers[\s\S]*type === "clusterflux"/);
|
|
expect(vscodeF5, "F5 uses local-services backend", /runtimeBackend[\s\S]*local-services/);
|
|
expect(vscodeF5, "F5 exposes real coordinator main thread", /threads\.find\(\(thread\) => thread\.name\.includes\("build coordinator main"\)\)[\s\S]*real coordinator-main entrypoint thread/);
|
|
expect(vscodeF5, "F5 does not fabricate a terminal event at the entry probe", /coordinator_task_events[\s\S]*value === 0[\s\S]*must not fabricate a terminal task event/);
|
|
|
|
expect(artifactDownload, "artifact download creates scoped link", /create_artifact_download_link/);
|
|
expect(artifactDownload, "artifact download opens stream", /open_artifact_download_stream/);
|
|
expect(artifactExport, "artifact export targets receiver node", /export_artifact_to_node[\s\S]*node-export-receiver/);
|
|
expect(artifactExport, "artifact export rejects coordinator bulk relay", /coordinator_bulk_relay_allowed[\s\S]*false/);
|
|
|
|
console.log("Public local demo matrix smoke passed");
|