
import { spawn } from "bun";
import { test, expect } from "bun:test";

test("args exclude run", async () => {
    const arg0 = process.argv[0];
    const arg1 = import.meta.dir + '/print-process-args.js';

    const exe = process.versions.bun.includes("debug") ? "bun-debug" : "bun";

    const { stdout: s1 } = spawn([exe, "print-process-args.js"], { cwd: import.meta.dir });
    const t1 = JSON.parse(await new Response(s1).text());
    expect(t1[0]).toBe(arg0);
    expect(t1[1]).toBe(arg1);

    const { stdout: s2 } = spawn([exe, "print-process-args.js", "arg1"], { cwd: import.meta.dir });
    const t2 = JSON.parse(await new Response(s2).text());
    expect(t2[0]).toBe(arg0);
    expect(t2[1]).toBe(arg1);
    expect(t2[2]).toBe("arg1");

    const { stdout: s3 } = spawn([exe, "run", "print-process-args.js"], { cwd: import.meta.dir });
    const t3 = JSON.parse(await new Response(s3).text());
    expect(t3[0]).toBe(arg0);
    expect(t3[1]).toBe(arg1);

    const { stdout: s4 } = spawn([exe, "run", "print-process-args.js", "arg1", "arg2"], { cwd: import.meta.dir });
    const t4 = JSON.parse(await new Response(s4).text());
    expect(t4[0]).toBe(arg0);
    expect(t4[1]).toBe(arg1);
    expect(t4[2]).toBe("arg1");
    expect(t4[3]).toBe("arg2");
});