* feat(ci): add version stamp script for dev publishes Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(ci): add CLI smoke tests for pipeline test stage Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(ci): add FixtureProvider for LLM conversation recording and replay Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(ci): add fixture test runner and sample recordings Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(ci): add live test stubs and pipeline npm scripts Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(ci): add three-stage promotion pipeline workflow Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(ci): add weekly cleanup workflow for stale dev versions Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(ci): add fixture recording helper stub Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
23 lines
553 B
TypeScript
23 lines
553 B
TypeScript
import { execFileSync } from "child_process";
|
|
|
|
const binary = process.env.GSD_SMOKE_BINARY || "npx";
|
|
const args = process.env.GSD_SMOKE_BINARY
|
|
? ["--help"]
|
|
: ["gsd-pi", "--help"];
|
|
|
|
const output = execFileSync(binary, args, {
|
|
encoding: "utf8",
|
|
timeout: 30_000,
|
|
});
|
|
|
|
const lower = output.toLowerCase();
|
|
|
|
if (!lower.includes("gsd")) {
|
|
console.error(`Help output does not contain "gsd": "${output}"`);
|
|
process.exit(1);
|
|
}
|
|
|
|
if (!lower.includes("usage")) {
|
|
console.error(`Help output does not contain "usage": "${output}"`);
|
|
process.exit(1);
|
|
}
|