diff options
Diffstat (limited to 'test/cli/run/if-present.test.ts')
-rw-r--r-- | test/cli/run/if-present.test.ts | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/test/cli/run/if-present.test.ts b/test/cli/run/if-present.test.ts new file mode 100644 index 000000000..120970b46 --- /dev/null +++ b/test/cli/run/if-present.test.ts @@ -0,0 +1,119 @@ +import { describe, test, expect, beforeAll } from "bun:test"; +import { spawnSync } from "bun"; +import { bunEnv, bunExe, tempDirWithFiles } from "harness"; + +let cwd: string; + +beforeAll(() => { + cwd = tempDirWithFiles("--if-present", { + "present.js": "console.log('Here!');", + "package.json": JSON.stringify({ + "name": "present", + "scripts": { + "present": "echo 'Here!'", + }, + }), + }); +}); + +describe("bun", () => { + test("should error with missing script", () => { + const { exitCode, stdout, stderr } = spawnSync({ + cwd, + cmd: [bunExe(), "notpresent"], + env: bunEnv, + stdout: "pipe", + stderr: "pipe", + }); + expect(stdout.toString()).toBeEmpty(); + expect(stderr.toString()).toMatch(/script not found/); + expect(exitCode).toBe(1); + }); + test("should error with missing module", () => { + const { exitCode, stdout, stderr } = spawnSync({ + cwd, + cmd: [bunExe(), "./notpresent.js"], + env: bunEnv, + stdout: "pipe", + stderr: "pipe", + }); + expect(stdout.toString()).toBeEmpty(); + expect(stderr.toString()).toMatch(/module not found/); + expect(exitCode).toBe(1); + }); + test("should error with missing file", () => { + const { exitCode, stdout, stderr } = spawnSync({ + cwd, + cmd: [bunExe(), "/path/to/notpresent.txt"], + env: bunEnv, + stdout: "pipe", + stderr: "pipe", + }); + expect(stdout.toString()).toBeEmpty(); + expect(stderr.toString()).toMatch(/file not found/); + expect(exitCode).toBe(1); + }); +}); + +describe("bun --if-present", () => { + test("should not error with missing script", () => { + const { exitCode, stdout, stderr } = spawnSync({ + cwd, + cmd: [bunExe(), "--if-present", "notpresent"], + env: bunEnv, + stdout: "pipe", + stderr: "pipe", + }); + expect(stdout.toString()).toBeEmpty(); + expect(stderr.toString()).toBeEmpty(); + expect(exitCode).toBe(0); + }); + test("should not error with missing module", () => { + const { exitCode, stdout, stderr } = spawnSync({ + cwd, + cmd: [bunExe(), "--if-present", "./notpresent.js"], + env: bunEnv, + stdout: "pipe", + stderr: "pipe", + }); + expect(stdout.toString()).toBeEmpty(); + expect(stderr.toString()).toBeEmpty(); + expect(exitCode).toBe(0); + }); + test("should not error with missing file", () => { + const { exitCode, stdout, stderr } = spawnSync({ + cwd, + cmd: [bunExe(), "--if-present", "/path/to/notpresent.txt"], + env: bunEnv, + stdout: "pipe", + stderr: "pipe", + }); + expect(stdout.toString()).toBeEmpty(); + expect(stderr.toString()).toBeEmpty(); + expect(exitCode).toBe(0); + }); + test("should run present script", () => { + const { exitCode, stdout, stderr } = spawnSync({ + cwd, + cmd: [bunExe(), "run", "present"], + env: bunEnv, + stdout: "pipe", + stderr: "pipe", + }); + expect(stdout.toString()).toMatch(/Here!/); + expect(stderr.toString()).not.toBeEmpty(); + expect(exitCode).toBe(0); + }); + test("should run present module", () => { + const { exitCode, stdout, stderr } = spawnSync({ + cwd, + cmd: [bunExe(), "run", "present.js"], + env: bunEnv, + stdout: "pipe", + stderr: "pipe", + }); + expect(stdout.toString()).toMatch(/Here!/); + expect(stderr.toString()).toBeEmpty(); + expect(exitCode).toBe(0); + }); +}); |