import { execFileSync } from "child_process"; import { mkdtempSync, existsSync, rmSync } from "fs"; import { join } from "path"; import { tmpdir } from "os"; // Skip in non-TTY environments (CI containers) — init requires interactive mode if (!process.stdin.isTTY && process.env.CI) { console.log(" SKIP test-init (no TTY in CI)"); process.exit(0); } const tmpDir = mkdtempSync(join(tmpdir(), "sf-smoke-init-")); try { const binary = process.env.SF_SMOKE_BINARY || "npx"; const args = process.env.SF_SMOKE_BINARY ? ["init"] : ["sf-run", "init"]; execFileSync(binary, args, { encoding: "utf8", timeout: 30_000, cwd: tmpDir, env: { ...process.env, SF_NON_INTERACTIVE: "1" }, }); const sfDir = join(tmpDir, ".sf"); if (!existsSync(sfDir)) { console.error(`.sf directory not created in ${tmpDir}`); process.exit(1); } } finally { rmSync(tmpDir, { recursive: true, force: true }); }