diff options
author | 2023-01-30 10:33:13 +0200 | |
---|---|---|
committer | 2023-01-30 00:33:13 -0800 | |
commit | 5c30983d5dd1fcf6c256feec119ed136b5dd408a (patch) | |
tree | b09bb50d056f199ecdb76e385eb019646f99b127 | |
parent | c9ca729493298a11ef45b4d2b99f644e209aa518 (diff) | |
download | bun-5c30983d5dd1fcf6c256feec119ed136b5dd408a.tar.gz bun-5c30983d5dd1fcf6c256feec119ed136b5dd408a.tar.zst bun-5c30983d5dd1fcf6c256feec119ed136b5dd408a.zip |
[bunx] fix version parsing (#1937)
-rw-r--r-- | src/cli/bunx_command.zig | 5 | ||||
-rw-r--r-- | src/install/install.zig | 1 | ||||
-rw-r--r-- | src/install/lockfile.zig | 1 | ||||
-rw-r--r-- | test/bun.js/install/bunx.test.ts | 64 |
4 files changed, 66 insertions, 5 deletions
diff --git a/src/cli/bunx_command.zig b/src/cli/bunx_command.zig index 9c83c00ba..3548702ee 100644 --- a/src/cli/bunx_command.zig +++ b/src/cli/bunx_command.zig @@ -223,11 +223,10 @@ pub const BunxCommand = struct { ); var PATH = this_bundler.env.map.get("PATH").?; - const display_version: []const u8 = - if (update_request.missing_version) + const display_version = if (update_request.version.literal.isEmpty()) "latest" else - update_request.version_buf; + update_request.version.literal.slice(update_request.version_buf); const PATH_FOR_BIN_DIRS = PATH; if (PATH.len > 0) { diff --git a/src/install/install.zig b/src/install/install.zig index d5ba59c4b..99cb9213d 100644 --- a/src/install/install.zig +++ b/src/install/install.zig @@ -5266,7 +5266,6 @@ pub const PackageManager = struct { resolution: Resolution = .{}, resolved_name: String = .{}, is_aliased: bool = false, - missing_version: bool = false, failed: bool = false, // This must be cloned to handle when the AST store resets e_string: ?*JSAst.E.String = null, diff --git a/src/install/lockfile.zig b/src/install/lockfile.zig index b948557bf..339521c0a 100644 --- a/src/install/lockfile.zig +++ b/src/install/lockfile.zig @@ -708,7 +708,6 @@ pub fn clean(old: *Lockfile, updates: []PackageManager.UpdateRequest) !*Lockfile updates[update_i].version = dep.version; updates[update_i].resolution = resolutions[package_id]; updates[update_i].resolved_name = names[package_id]; - updates[update_i].missing_version = true; } } } 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); +}); |