singularity-forge/tests/smoke/test-init.ts

39 lines
1 KiB
TypeScript
Raw Permalink Normal View History

2026-05-05 14:46:18 +02:00
import { execFileSync } from "node:child_process";
import { existsSync, mkdtempSync, rmSync } from "node:fs";
import { tmpdir } from "node:os";
import { join } from "node:path";
// Skip in non-TTY environments — init enters the interactive setup flow.
if (!process.stdin.isTTY || !process.stdout.isTTY) {
console.log(" SKIP test-init (no TTY)");
2026-05-05 14:31:16 +02:00
process.exit(0);
}
const tmpDir = mkdtempSync(join(tmpdir(), "sf-smoke-init-"));
try {
const defaultBinary = process.execPath;
const defaultArgs = [
join(import.meta.dirname, "..", "..", "dist", "loader.js"),
];
const binary = process.env.SF_SMOKE_BINARY || defaultBinary;
const args = process.env.SF_SMOKE_BINARY
? ["init"]
: [...defaultArgs, "init"];
2026-05-05 14:31:16 +02:00
execFileSync(binary, args, {
encoding: "utf8",
timeout: 30_000,
cwd: tmpDir,
env: { ...process.env, SF_NON_INTERACTIVE: "1" },
});
2026-05-05 14:31:16 +02:00
const sfDir = join(tmpDir, ".sf");
if (!existsSync(sfDir)) {
console.error(`.sf directory not created in ${tmpDir}`);
process.exit(1);
}
} finally {
2026-05-05 14:31:16 +02:00
rmSync(tmpDir, { recursive: true, force: true });
}