import { spawnSync } from "node:child_process";
import { describe, expect, it } from "vitest";

function runTestForce(...args: string[]) {
  return spawnSync(process.execPath, ["--import", "tsx", "scripts/test-force.ts", ...args], {
    cwd: process.cwd(),
    encoding: "utf8",
  });
}

describe("scripts/test-force.ts", () => {
  it("prints help without clearing ports or running tests", () => {
    const result = runTestForce("--help");

    expect(result.status).toBe(0);
    expect(result.stderr).toBe("");
    expect(result.stdout).toContain("Usage: node --import tsx scripts/test-force.ts");
    expect(result.stdout).not.toContain("test:force - clearing gateway");
    expect(result.stdout).not.toContain("running pnpm test");
  });

  it("rejects unknown arguments before clearing ports or running tests", () => {
    const result = runTestForce("--bogus");

    expect(result.status).toBe(2);
    expect(result.stderr).toContain("unknown argument: --bogus");
    expect(result.stderr).toContain("Usage: node --import tsx scripts/test-force.ts");
    expect(result.stdout).not.toContain("test:force - clearing gateway");
    expect(result.stdout).not.toContain("running pnpm test");
  });
});
