From 75aa963fef94b236ccc9043fd9d1643005fce264 Mon Sep 17 00:00:00 2001 From: Dylan Conway Date: Mon, 6 Nov 2023 17:58:25 -0800 Subject: [PATCH] test for invalid version --- src/install/dependency.zig | 12 +++++- src/install/semver.zig | 4 ++ .../registry/bun-install-registry.test.ts | 40 +++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/install/dependency.zig b/src/install/dependency.zig index 66d96b7d38..47bdc55b8f 100644 --- a/src/install/dependency.zig +++ b/src/install/dependency.zig @@ -762,7 +762,17 @@ pub fn parseWithTag( input, sliced.sub(input), ) catch |err| { - if (log_) |log| log.addErrorFmt(null, logger.Loc.Empty, allocator, "{s} parsing dependency \"{s}\"", .{ @errorName(err), dependency }) catch unreachable; + if (log_) |log| log.addErrorFmt( + null, + logger.Loc.Empty, + allocator, + "{s} parsing dependency \"{s}\" with version \"{s}\"", + .{ + @errorName(err), + name.fmt(sliced.buf), + dependency, + }, + ) catch unreachable; return null; }; diff --git a/src/install/semver.zig b/src/install/semver.zig index 388e6dae67..cbb3459de6 100644 --- a/src/install/semver.zig +++ b/src/install/semver.zig @@ -2066,6 +2066,10 @@ pub const Query = struct { } } + if (count == 0) { + return error.InvalidDependencyVersion; + } + return list; } }; diff --git a/test/cli/install/registry/bun-install-registry.test.ts b/test/cli/install/registry/bun-install-registry.test.ts index d9a3c0f195..c7517c88bc 100644 --- a/test/cli/install/registry/bun-install-registry.test.ts +++ b/test/cli/install/registry/bun-install-registry.test.ts @@ -251,6 +251,16 @@ describe("semver", () => { depVersion: "1||2", expected: "2.0.1", }, + { + title: "no version is latest", + depVersion: "", + expected: "3.0.0", + }, + { + title: "tagged version works", + depVersion: "pre-2", + expected: "2.0.1", + }, ]; for (const { title, depVersion, expected } of taggedVersionTests) { @@ -290,6 +300,36 @@ describe("semver", () => { ]); }); } + + test("only tagged versions in range errors", async () => { + await writeFile( + join(packageDir, "package.json"), + JSON.stringify({ + name: "foo", + version: "1.0.0", + dependencies: { + "dep-with-tags": "pre-1 || pre-2", + }, + }), + ); + + var { stdout, stderr, exited } = spawn({ + cmd: [bunExe(), "install"], + cwd: packageDir, + stdout: null, + stdin: "pipe", + stderr: "pipe", + env, + }); + + expect(stderr).toBeDefined(); + var err = await new Response(stderr).text(); + expect(stdout).toBeDefined(); + var out = await new Response(stdout).text(); + expect(await exited).toBe(1); + expect(err).toContain('InvalidDependencyVersion parsing dependency "dep-with-tags" with version "pre-1 || pre-2"'); + expect(out).toBeEmpty(); + }); }); describe("prereleases", () => {