diff options
author | 2023-09-20 07:54:54 +0800 | |
---|---|---|
committer | 2023-09-19 16:54:54 -0700 | |
commit | ddb1189b2d67fcec3d5821930e3c7b1f865a5c48 (patch) | |
tree | 5fe4cfcd397821a791a56f4595fa6e165f030c3a | |
parent | 4fce34854be8e1f29bf89f02f7a2541ef5e1d3a8 (diff) | |
download | bun-ddb1189b2d67fcec3d5821930e3c7b1f865a5c48.tar.gz bun-ddb1189b2d67fcec3d5821930e3c7b1f865a5c48.tar.zst bun-ddb1189b2d67fcec3d5821930e3c7b1f865a5c48.zip |
fix(cli): `bun pm cache rm` command not work (#4571)
* fix(cli): rm arg is in positionals[1]
* chore(cli): add cache remove test
* chore: remvoe unnecessary join
* chore: run formatter
---------
Co-authored-by: dave caruso <me@paperdave.net>
-rw-r--r-- | src/cli/package_manager_command.zig | 2 | ||||
-rw-r--r-- | test/cli/install/bun-pm.test.ts | 89 |
2 files changed, 89 insertions, 2 deletions
diff --git a/src/cli/package_manager_command.zig b/src/cli/package_manager_command.zig index a70dec020..aef7c28a9 100644 --- a/src/cli/package_manager_command.zig +++ b/src/cli/package_manager_command.zig @@ -162,7 +162,7 @@ pub const PackageManagerCommand = struct { Global.crash(); }; - if (pm.options.positionals.len > 0 and strings.eqlComptime(pm.options.positionals[0], "rm")) { + if (pm.options.positionals.len > 1 and strings.eqlComptime(pm.options.positionals[1], "rm")) { std.fs.deleteTreeAbsolute(outpath) catch |err| { Output.prettyErrorln("{s} deleting cache directory", .{@errorName(err)}); Global.crash(); diff --git a/test/cli/install/bun-pm.test.ts b/test/cli/install/bun-pm.test.ts index 23b73dfae..9729ada7b 100644 --- a/test/cli/install/bun-pm.test.ts +++ b/test/cli/install/bun-pm.test.ts @@ -1,7 +1,7 @@ import { spawn } from "bun"; import { afterAll, afterEach, beforeAll, beforeEach, expect, it } from "bun:test"; import { bunExe, bunEnv as env } from "harness"; -import { mkdir, writeFile } from "fs/promises"; +import { mkdir, writeFile, exists } from "fs/promises"; import { join } from "path"; import { dummyAfterAll, @@ -10,6 +10,7 @@ import { dummyBeforeEach, dummyRegistry, package_dir, + readdirSorted, requested, root_url, setHandler, @@ -245,3 +246,89 @@ it("should list aliased dependencies", async () => { expect(urls.sort()).toEqual([]); expect(requested).toBe(2); }); + +it("should remove all cache", async () => { + const urls: string[] = []; + setHandler(dummyRegistry(urls)); + await writeFile( + join(package_dir, "package.json"), + JSON.stringify({ + name: "foo", + version: "0.0.1", + dependencies: { + "moo-1": "./moo", + }, + }), + ); + await mkdir(join(package_dir, "moo")); + await writeFile( + join(package_dir, "moo", "package.json"), + JSON.stringify({ + name: "moo", + version: "0.1.0", + dependencies: { + "bar-1": "npm:bar", + }, + }), + ); + let cache_dir: string = join(package_dir, "node_modules", ".cache"); + expect( + await spawn({ + cmd: [bunExe(), "install"], + cwd: package_dir, + stdout: null, + stdin: "pipe", + stderr: "pipe", + env: { + ...env, + BUN_INSTALL_CACHE_DIR: cache_dir, + }, + }).exited, + ).toBe(0); + expect(urls.sort()).toEqual([`${root_url}/bar`, `${root_url}/bar-0.0.2.tgz`]); + expect(requested).toBe(2); + expect(await readdirSorted(cache_dir)).toContain("bar"); + + const { + stdout: stdout1, + stderr: stderr1, + exited: exited1, + } = spawn({ + cmd: [bunExe(), "pm", "cache"], + cwd: package_dir, + stdout: "pipe", + stdin: "pipe", + stderr: "pipe", + env: { + ...env, + BUN_INSTALL_CACHE_DIR: cache_dir, + }, + }); + expect(stderr1).toBeDefined(); + expect(await new Response(stderr1).text()).toBe(""); + expect(stdout1).toBeDefined(); + expect(await new Response(stdout1).text()).toBe(cache_dir); + expect(await exited1).toBe(0); + + const { + stdout: stdout2, + stderr: stderr2, + exited: exited2, + } = spawn({ + cmd: [bunExe(), "pm", "cache", "rm"], + cwd: package_dir, + stdout: "pipe", + stdin: "pipe", + stderr: "pipe", + env: { + ...env, + BUN_INSTALL_CACHE_DIR: cache_dir, + }, + }); + expect(stderr2).toBeDefined(); + expect(await new Response(stderr2).text()).toBe(""); + expect(stdout2).toBeDefined(); + expect(await new Response(stdout2).text()).toBe("Cache directory deleted:\n " + cache_dir + "\n"); + expect(await exited2).toBe(0); + expect(await exists(cache_dir)).toBeFalse(); +}); |