diff options
Diffstat (limited to 'test/bun.js')
-rw-r--r-- | test/bun.js/install/bunx.test.ts | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/test/bun.js/install/bunx.test.ts b/test/bun.js/install/bunx.test.ts new file mode 100644 index 000000000..95fe3b2b9 --- /dev/null +++ b/test/bun.js/install/bunx.test.ts @@ -0,0 +1,64 @@ +import { spawn } from "bun"; +import { + afterEach, + beforeEach, + expect, + it, +} from "bun:test"; +import { bunExe } from "bunExe"; +import { bunEnv as env } from "bunEnv"; +import { realpathSync } from "fs"; +import { mkdtemp, rm } from "fs/promises"; +import { tmpdir } from "os"; +import { join } from "path"; + +let x_dir; + +beforeEach(async () => { + x_dir = realpathSync(await mkdtemp(join(tmpdir(), "bun-install.test"))); +}); +afterEach(async () => { + await rm(x_dir, { force: true, recursive: true }); +}); + +it("should install and run default (latest) version", async () => { + const { stdout, stderr, exited } = spawn({ + cmd: [bunExe(), "x", "uglify-js", "--compress"], + cwd: x_dir, + stdout: null, + stdin: new TextEncoder().encode("console.log(6 * 7);"), + stderr: "pipe", + env, + }); + expect(stderr).toBeDefined(); + const err = await new Response(stderr).text(); + expect(err).not.toContain("error"); + expect(stdout).toBeDefined(); + const out = await new Response(stdout).text(); + expect(out.split(/\r?\n/)).toEqual([ + "console.log(42);", + "", + ]); + expect(await exited).toBe(0); +}); + +it("should install and run specified version", async () => { + const { stdout, stderr, exited } = spawn({ + cmd: [bunExe(), "x", "uglify-js@3.14.1", "-v"], + cwd: x_dir, + stdout: null, + stdin: "pipe", + stderr: "pipe", + env, + }); + expect(stderr).toBeDefined(); + const err = await new Response(stderr).text(); + expect(err).not.toContain("error"); + expect(stdout).toBeDefined(); + const out = await new Response(stdout).text(); + expect(out.split(/\r?\n/)).toEqual([ + "uglify-js 3.14.1", + "", + ]); + expect(await exited).toBe(0); +}); |