aboutsummaryrefslogtreecommitdiff
path: root/test/cli/run/if-present.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'test/cli/run/if-present.test.ts')
-rw-r--r--test/cli/run/if-present.test.ts119
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);
+ });
+});