mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 18:38:55 +00:00
Update bun-install.test.ts
This commit is contained in:
@@ -5436,16 +5436,30 @@ it("should handle installing packages from inside a workspace with `*`", async (
|
||||
});
|
||||
|
||||
it("should handle installing packages inside workspaces with difference versions", async () => {
|
||||
await writeFile(
|
||||
join(package_dir, "package.json"),
|
||||
let package_jsons = [
|
||||
JSON.stringify({
|
||||
name: "main",
|
||||
workspaces: ["packages/*"],
|
||||
private: true,
|
||||
}),
|
||||
);
|
||||
JSON.stringify({
|
||||
name: "main",
|
||||
private: true,
|
||||
workspaces: [
|
||||
"packages/package1",
|
||||
"packages/package2",
|
||||
"packages/package3",
|
||||
"packages/package4",
|
||||
"packages/package5",
|
||||
],
|
||||
}),
|
||||
];
|
||||
await mkdir(join(package_dir, "packages", "package1"), { recursive: true });
|
||||
await mkdir(join(package_dir, "packages", "package2"));
|
||||
await mkdir(join(package_dir, "packages", "package3"));
|
||||
await mkdir(join(package_dir, "packages", "package4"));
|
||||
await mkdir(join(package_dir, "packages", "package5"));
|
||||
{
|
||||
await mkdir(join(package_dir, "packages", "package1"), { recursive: true });
|
||||
const package1 = JSON.stringify({
|
||||
name: "package1",
|
||||
version: "0.0.2",
|
||||
@@ -5453,7 +5467,6 @@ it("should handle installing packages inside workspaces with difference versions
|
||||
await writeFile(join(package_dir, "packages", "package1", "package.json"), package1);
|
||||
}
|
||||
{
|
||||
await mkdir(join(package_dir, "packages", "package2"));
|
||||
const package2 = JSON.stringify({
|
||||
name: "package2",
|
||||
version: "0.0.1",
|
||||
@@ -5464,7 +5477,6 @@ it("should handle installing packages inside workspaces with difference versions
|
||||
await writeFile(join(package_dir, "packages", "package2", "package.json"), package2);
|
||||
}
|
||||
{
|
||||
await mkdir(join(package_dir, "packages", "package3"));
|
||||
const package3 = JSON.stringify({
|
||||
name: "package3",
|
||||
version: "0.0.1",
|
||||
@@ -5475,7 +5487,6 @@ it("should handle installing packages inside workspaces with difference versions
|
||||
await writeFile(join(package_dir, "packages", "package3", "package.json"), package3);
|
||||
}
|
||||
{
|
||||
await mkdir(join(package_dir, "packages", "package4"));
|
||||
const package4 = JSON.stringify({
|
||||
name: "package4",
|
||||
version: "0.0.1",
|
||||
@@ -5486,7 +5497,6 @@ it("should handle installing packages inside workspaces with difference versions
|
||||
await writeFile(join(package_dir, "packages", "package4", "package.json"), package4);
|
||||
}
|
||||
{
|
||||
await mkdir(join(package_dir, "packages", "package5"));
|
||||
const package5 = JSON.stringify({
|
||||
name: "package5",
|
||||
version: "0.0.1",
|
||||
@@ -5496,274 +5506,328 @@ it("should handle installing packages inside workspaces with difference versions
|
||||
});
|
||||
await writeFile(join(package_dir, "packages", "package5", "package.json"), package5);
|
||||
}
|
||||
for (const package_json of package_jsons) {
|
||||
await writeFile(join(package_dir, "package.json"), package_json);
|
||||
|
||||
const {
|
||||
stdout: stdout1,
|
||||
stderr: stderr1,
|
||||
exited: exited1,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install"],
|
||||
cwd: join(package_dir, "packages", "package2"),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr1).toBeDefined();
|
||||
const err1 = await new Response(stderr1).text();
|
||||
expect(err1).toContain("Saved lockfile");
|
||||
const out1 = await new Response(stdout1).text();
|
||||
expect(out1.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([
|
||||
" + package1@workspace:packages/package1",
|
||||
" + package2@workspace:packages/package2",
|
||||
" + package3@workspace:packages/package3",
|
||||
" + package4@workspace:packages/package4",
|
||||
" + package5@workspace:packages/package5",
|
||||
"",
|
||||
" 5 packages installed",
|
||||
]);
|
||||
expect(await exited1).toBe(0);
|
||||
expect(requested).toBe(0);
|
||||
await access(join(package_dir, "bun.lockb"));
|
||||
{
|
||||
const package1 = JSON.stringify({
|
||||
name: "package1",
|
||||
version: "0.0.2",
|
||||
});
|
||||
await writeFile(join(package_dir, "packages", "package1", "package.json"), package1);
|
||||
}
|
||||
{
|
||||
const package2 = JSON.stringify({
|
||||
name: "package2",
|
||||
version: "0.0.1",
|
||||
dependencies: {
|
||||
package1: "workspace:*",
|
||||
},
|
||||
});
|
||||
await writeFile(join(package_dir, "packages", "package2", "package.json"), package2);
|
||||
}
|
||||
{
|
||||
const package3 = JSON.stringify({
|
||||
name: "package3",
|
||||
version: "0.0.1",
|
||||
dependencies: {
|
||||
package1: "workspace:^",
|
||||
},
|
||||
});
|
||||
await writeFile(join(package_dir, "packages", "package3", "package.json"), package3);
|
||||
}
|
||||
{
|
||||
const package4 = JSON.stringify({
|
||||
name: "package4",
|
||||
version: "0.0.1",
|
||||
dependencies: {
|
||||
package1: "workspace:../package1",
|
||||
},
|
||||
});
|
||||
await writeFile(join(package_dir, "packages", "package4", "package.json"), package4);
|
||||
}
|
||||
{
|
||||
const package5 = JSON.stringify({
|
||||
name: "package5",
|
||||
version: "0.0.1",
|
||||
dependencies: {
|
||||
package1: "workspace:0.0.2",
|
||||
},
|
||||
});
|
||||
await writeFile(join(package_dir, "packages", "package5", "package.json"), package5);
|
||||
}
|
||||
|
||||
var urls: string[] = [];
|
||||
setHandler(dummyRegistry(urls));
|
||||
const {
|
||||
stdout: stdout1,
|
||||
stderr: stderr1,
|
||||
exited: exited1,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install"],
|
||||
cwd: join(package_dir, "packages", "package2"),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr1).toBeDefined();
|
||||
const err1 = await new Response(stderr1).text();
|
||||
expect(err1).toContain("Saved lockfile");
|
||||
const out1 = await new Response(stdout1).text();
|
||||
expect(out1.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([
|
||||
" + package1@workspace:packages/package1",
|
||||
" + package2@workspace:packages/package2",
|
||||
" + package3@workspace:packages/package3",
|
||||
" + package4@workspace:packages/package4",
|
||||
" + package5@workspace:packages/package5",
|
||||
"",
|
||||
" 5 packages installed",
|
||||
]);
|
||||
expect(await exited1).toBe(0);
|
||||
await access(join(package_dir, "bun.lockb"));
|
||||
|
||||
const {
|
||||
stdout: stdout1_2,
|
||||
stderr: stderr1_2,
|
||||
exited: exited1_2,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install", "bar"],
|
||||
cwd: join(package_dir, "packages", "package2"),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr1_2).toBeDefined();
|
||||
expect(stderr1_2).toBeDefined();
|
||||
const err1_2 = await new Response(stderr1_2).text();
|
||||
expect(err1_2).toContain("Saved lockfile");
|
||||
expect(stdout1_2).toBeDefined();
|
||||
const out1_2 = await new Response(stdout1_2).text();
|
||||
expect(out1_2).toContain("installed bar");
|
||||
expect(await exited1_2).toBe(0);
|
||||
expect(urls.sort()).toEqual([`${root_url}/bar`, `${root_url}/bar-0.0.2.tgz`]);
|
||||
await access(join(package_dir, "bun.lockb"));
|
||||
var urls: string[] = [];
|
||||
setHandler(dummyRegistry(urls));
|
||||
|
||||
await rm(join(package_dir, "node_modules"), { force: true, recursive: true });
|
||||
await rm(join(package_dir, "bun.lockb"), { force: true, recursive: true });
|
||||
const {
|
||||
stdout: stdout1_2,
|
||||
stderr: stderr1_2,
|
||||
exited: exited1_2,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install", "bar"],
|
||||
cwd: join(package_dir, "packages", "package2"),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr1_2).toBeDefined();
|
||||
expect(stderr1_2).toBeDefined();
|
||||
const err1_2 = await new Response(stderr1_2).text();
|
||||
expect(err1_2).toContain("Saved lockfile");
|
||||
expect(stdout1_2).toBeDefined();
|
||||
const out1_2 = await new Response(stdout1_2).text();
|
||||
expect(out1_2).toContain("installed bar");
|
||||
expect(await exited1_2).toBe(0);
|
||||
expect(urls.sort()).toEqual([`${root_url}/bar`, `${root_url}/bar-0.0.2.tgz`]);
|
||||
await access(join(package_dir, "bun.lockb"));
|
||||
|
||||
const {
|
||||
stdout: stdout2,
|
||||
stderr: stderr2,
|
||||
exited: exited2,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install"],
|
||||
cwd: join(package_dir, "packages", "package3"),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr2).toBeDefined();
|
||||
const err2 = await new Response(stderr2).text();
|
||||
expect(err2).toContain("Saved lockfile");
|
||||
expect(stdout2).toBeDefined();
|
||||
const out2 = await new Response(stdout2).text();
|
||||
expect(out2.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([
|
||||
" + package1@workspace:packages/package1",
|
||||
" + package2@workspace:packages/package2",
|
||||
" + package3@workspace:packages/package3",
|
||||
" + package4@workspace:packages/package4",
|
||||
" + package5@workspace:packages/package5",
|
||||
"",
|
||||
" 6 packages installed",
|
||||
]);
|
||||
expect(await exited2).toBe(0);
|
||||
await rm(join(package_dir, "node_modules"), { force: true, recursive: true });
|
||||
await rm(join(package_dir, "bun.lockb"), { force: true, recursive: true });
|
||||
|
||||
const {
|
||||
stdout: stdout2_2,
|
||||
stderr: stderr2_2,
|
||||
exited: exited2_2,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install", "bar"],
|
||||
cwd: join(package_dir, "packages", "package3"),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr2_2).toBeDefined();
|
||||
expect(stderr2_2).toBeDefined();
|
||||
const err2_2 = await new Response(stderr2_2).text();
|
||||
expect(err2_2).toContain("Saved lockfile");
|
||||
expect(stdout2_2).toBeDefined();
|
||||
const out2_2 = await new Response(stdout2_2).text();
|
||||
expect(out2_2).toContain("installed bar");
|
||||
expect(await exited2_2).toBe(0);
|
||||
await access(join(package_dir, "bun.lockb"));
|
||||
const {
|
||||
stdout: stdout2,
|
||||
stderr: stderr2,
|
||||
exited: exited2,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install"],
|
||||
cwd: join(package_dir, "packages", "package3"),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr2).toBeDefined();
|
||||
const err2 = await new Response(stderr2).text();
|
||||
expect(err2).toContain("Saved lockfile");
|
||||
expect(stdout2).toBeDefined();
|
||||
const out2 = await new Response(stdout2).text();
|
||||
expect(out2.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([
|
||||
" + package1@workspace:packages/package1",
|
||||
" + package2@workspace:packages/package2",
|
||||
" + package3@workspace:packages/package3",
|
||||
" + package4@workspace:packages/package4",
|
||||
" + package5@workspace:packages/package5",
|
||||
"",
|
||||
" 6 packages installed",
|
||||
]);
|
||||
expect(await exited2).toBe(0);
|
||||
|
||||
await rm(join(package_dir, "node_modules"), { force: true, recursive: true });
|
||||
await rm(join(package_dir, "bun.lockb"), { force: true, recursive: true });
|
||||
const {
|
||||
stdout: stdout2_2,
|
||||
stderr: stderr2_2,
|
||||
exited: exited2_2,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install", "bar"],
|
||||
cwd: join(package_dir, "packages", "package3"),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr2_2).toBeDefined();
|
||||
expect(stderr2_2).toBeDefined();
|
||||
const err2_2 = await new Response(stderr2_2).text();
|
||||
expect(err2_2).toContain("Saved lockfile");
|
||||
expect(stdout2_2).toBeDefined();
|
||||
const out2_2 = await new Response(stdout2_2).text();
|
||||
expect(out2_2).toContain("installed bar");
|
||||
expect(await exited2_2).toBe(0);
|
||||
await access(join(package_dir, "bun.lockb"));
|
||||
|
||||
const {
|
||||
stdout: stdout3,
|
||||
stderr: stderr3,
|
||||
exited: exited3,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install"],
|
||||
cwd: join(package_dir, "packages", "package4"),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr2).toBeDefined();
|
||||
const err3 = await new Response(stderr3).text();
|
||||
expect(err3).toContain("Saved lockfile");
|
||||
expect(stdout3).toBeDefined();
|
||||
const out3 = await new Response(stdout3).text();
|
||||
expect(out3.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([
|
||||
" + package1@workspace:packages/package1",
|
||||
" + package2@workspace:packages/package2",
|
||||
" + package3@workspace:packages/package3",
|
||||
" + package4@workspace:packages/package4",
|
||||
" + package5@workspace:packages/package5",
|
||||
"",
|
||||
" 6 packages installed",
|
||||
]);
|
||||
expect(await exited3).toBe(0);
|
||||
await rm(join(package_dir, "node_modules"), { force: true, recursive: true });
|
||||
await rm(join(package_dir, "bun.lockb"), { force: true, recursive: true });
|
||||
|
||||
const {
|
||||
stdout: stdout3_2,
|
||||
stderr: stderr3_2,
|
||||
exited: exited3_2,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install", "bar"],
|
||||
cwd: join(package_dir, "packages", "package4"),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr3_2).toBeDefined();
|
||||
expect(stderr3_2).toBeDefined();
|
||||
const err3_2 = await new Response(stderr3_2).text();
|
||||
expect(err3_2).toContain("Saved lockfile");
|
||||
expect(stdout3_2).toBeDefined();
|
||||
const out3_2 = await new Response(stdout3_2).text();
|
||||
expect(out3_2).toContain("installed bar");
|
||||
expect(await exited3_2).toBe(0);
|
||||
await access(join(package_dir, "bun.lockb"));
|
||||
const {
|
||||
stdout: stdout3,
|
||||
stderr: stderr3,
|
||||
exited: exited3,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install"],
|
||||
cwd: join(package_dir, "packages", "package4"),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr2).toBeDefined();
|
||||
const err3 = await new Response(stderr3).text();
|
||||
expect(err3).toContain("Saved lockfile");
|
||||
expect(stdout3).toBeDefined();
|
||||
const out3 = await new Response(stdout3).text();
|
||||
expect(out3.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([
|
||||
" + package1@workspace:packages/package1",
|
||||
" + package2@workspace:packages/package2",
|
||||
" + package3@workspace:packages/package3",
|
||||
" + package4@workspace:packages/package4",
|
||||
" + package5@workspace:packages/package5",
|
||||
"",
|
||||
" 6 packages installed",
|
||||
]);
|
||||
expect(await exited3).toBe(0);
|
||||
|
||||
await rm(join(package_dir, "node_modules"), { force: true, recursive: true });
|
||||
await rm(join(package_dir, "bun.lockb"), { force: true, recursive: true });
|
||||
const {
|
||||
stdout: stdout3_2,
|
||||
stderr: stderr3_2,
|
||||
exited: exited3_2,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install", "bar"],
|
||||
cwd: join(package_dir, "packages", "package4"),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr3_2).toBeDefined();
|
||||
expect(stderr3_2).toBeDefined();
|
||||
const err3_2 = await new Response(stderr3_2).text();
|
||||
expect(err3_2).toContain("Saved lockfile");
|
||||
expect(stdout3_2).toBeDefined();
|
||||
const out3_2 = await new Response(stdout3_2).text();
|
||||
expect(out3_2).toContain("installed bar");
|
||||
expect(await exited3_2).toBe(0);
|
||||
await access(join(package_dir, "bun.lockb"));
|
||||
|
||||
const {
|
||||
stdout: stdout4,
|
||||
stderr: stderr4,
|
||||
exited: exited4,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install"],
|
||||
cwd: join(package_dir, "packages", "package5"),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr4).toBeDefined();
|
||||
const err4 = await new Response(stderr4).text();
|
||||
expect(err4).toContain("Saved lockfile");
|
||||
expect(stdout4).toBeDefined();
|
||||
const out4 = await new Response(stdout4).text();
|
||||
expect(out4.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([
|
||||
" + package1@workspace:packages/package1",
|
||||
" + package2@workspace:packages/package2",
|
||||
" + package3@workspace:packages/package3",
|
||||
" + package4@workspace:packages/package4",
|
||||
" + package5@workspace:packages/package5",
|
||||
"",
|
||||
" 6 packages installed",
|
||||
]);
|
||||
expect(await exited4).toBe(0);
|
||||
await rm(join(package_dir, "node_modules"), { force: true, recursive: true });
|
||||
await rm(join(package_dir, "bun.lockb"), { force: true, recursive: true });
|
||||
|
||||
const {
|
||||
stdout: stdout4_2,
|
||||
stderr: stderr4_2,
|
||||
exited: exited4_2,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install", "bar"],
|
||||
cwd: join(package_dir, "packages", "package5"),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr4_2).toBeDefined();
|
||||
expect(stderr4_2).toBeDefined();
|
||||
const err4_2 = await new Response(stderr4_2).text();
|
||||
expect(err4_2).toContain("Saved lockfile");
|
||||
expect(stdout4_2).toBeDefined();
|
||||
const out4_2 = await new Response(stdout4_2).text();
|
||||
expect(out4_2).toContain("installed bar");
|
||||
expect(await exited4_2).toBe(0);
|
||||
await access(join(package_dir, "bun.lockb"));
|
||||
const {
|
||||
stdout: stdout4,
|
||||
stderr: stderr4,
|
||||
exited: exited4,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install"],
|
||||
cwd: join(package_dir, "packages", "package5"),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr4).toBeDefined();
|
||||
const err4 = await new Response(stderr4).text();
|
||||
expect(err4).toContain("Saved lockfile");
|
||||
expect(stdout4).toBeDefined();
|
||||
const out4 = await new Response(stdout4).text();
|
||||
expect(out4.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([
|
||||
" + package1@workspace:packages/package1",
|
||||
" + package2@workspace:packages/package2",
|
||||
" + package3@workspace:packages/package3",
|
||||
" + package4@workspace:packages/package4",
|
||||
" + package5@workspace:packages/package5",
|
||||
"",
|
||||
" 6 packages installed",
|
||||
]);
|
||||
expect(await exited4).toBe(0);
|
||||
|
||||
// from the root
|
||||
await rm(join(package_dir, "node_modules"), { force: true, recursive: true });
|
||||
await rm(join(package_dir, "bun.lockb"), { force: true, recursive: true });
|
||||
const {
|
||||
stdout: stdout4_2,
|
||||
stderr: stderr4_2,
|
||||
exited: exited4_2,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install", "bar"],
|
||||
cwd: join(package_dir, "packages", "package5"),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr4_2).toBeDefined();
|
||||
expect(stderr4_2).toBeDefined();
|
||||
const err4_2 = await new Response(stderr4_2).text();
|
||||
expect(err4_2).toContain("Saved lockfile");
|
||||
expect(stdout4_2).toBeDefined();
|
||||
const out4_2 = await new Response(stdout4_2).text();
|
||||
expect(out4_2).toContain("installed bar");
|
||||
expect(await exited4_2).toBe(0);
|
||||
await access(join(package_dir, "bun.lockb"));
|
||||
|
||||
const {
|
||||
stdout: stdout5,
|
||||
stderr: stderr5,
|
||||
exited: exited5,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install"],
|
||||
cwd: join(package_dir),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr5).toBeDefined();
|
||||
const err5 = await new Response(stderr5).text();
|
||||
expect(err5).toContain("Saved lockfile");
|
||||
expect(stdout5).toBeDefined();
|
||||
const out5 = await new Response(stdout5).text();
|
||||
expect(out5.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([
|
||||
" + package1@workspace:packages/package1",
|
||||
" + package2@workspace:packages/package2",
|
||||
" + package3@workspace:packages/package3",
|
||||
" + package4@workspace:packages/package4",
|
||||
" + package5@workspace:packages/package5",
|
||||
"",
|
||||
" 6 packages installed",
|
||||
]);
|
||||
expect(await exited5).toBe(0);
|
||||
// from the root
|
||||
await rm(join(package_dir, "node_modules"), { force: true, recursive: true });
|
||||
await rm(join(package_dir, "bun.lockb"), { force: true, recursive: true });
|
||||
|
||||
const {
|
||||
stdout: stdout5_2,
|
||||
stderr: stderr5_2,
|
||||
exited: exited5_2,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install", "bar"],
|
||||
cwd: join(package_dir),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr5_2).toBeDefined();
|
||||
expect(stderr5_2).toBeDefined();
|
||||
const err5_2 = await new Response(stderr5_2).text();
|
||||
expect(err5_2).toContain("Saved lockfile");
|
||||
expect(stdout5_2).toBeDefined();
|
||||
const out5_2 = await new Response(stdout5_2).text();
|
||||
expect(out5_2).toContain("installed bar");
|
||||
expect(await exited5_2).toBe(0);
|
||||
await access(join(package_dir, "bun.lockb"));
|
||||
const {
|
||||
stdout: stdout5,
|
||||
stderr: stderr5,
|
||||
exited: exited5,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install"],
|
||||
cwd: join(package_dir),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr5).toBeDefined();
|
||||
const err5 = await new Response(stderr5).text();
|
||||
expect(err5).toContain("Saved lockfile");
|
||||
expect(stdout5).toBeDefined();
|
||||
const out5 = await new Response(stdout5).text();
|
||||
expect(out5.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([
|
||||
" + package1@workspace:packages/package1",
|
||||
" + package2@workspace:packages/package2",
|
||||
" + package3@workspace:packages/package3",
|
||||
" + package4@workspace:packages/package4",
|
||||
" + package5@workspace:packages/package5",
|
||||
"",
|
||||
" 6 packages installed",
|
||||
]);
|
||||
expect(await exited5).toBe(0);
|
||||
|
||||
const {
|
||||
stdout: stdout5_2,
|
||||
stderr: stderr5_2,
|
||||
exited: exited5_2,
|
||||
} = spawn({
|
||||
cmd: [bunExe(), "install", "bar"],
|
||||
cwd: join(package_dir),
|
||||
stdout: null,
|
||||
stdin: "pipe",
|
||||
stderr: "pipe",
|
||||
env,
|
||||
});
|
||||
expect(stderr5_2).toBeDefined();
|
||||
expect(stderr5_2).toBeDefined();
|
||||
const err5_2 = await new Response(stderr5_2).text();
|
||||
expect(err5_2).toContain("Saved lockfile");
|
||||
expect(stdout5_2).toBeDefined();
|
||||
const out5_2 = await new Response(stdout5_2).text();
|
||||
expect(out5_2).toContain("installed bar");
|
||||
expect(await exited5_2).toBe(0);
|
||||
await access(join(package_dir, "bun.lockb"));
|
||||
|
||||
await rm(join(package_dir, "node_modules"), { force: true, recursive: true });
|
||||
await rm(join(package_dir, "bun.lockb"), { force: true, recursive: true });
|
||||
await rm(join(package_dir, "package.json"));
|
||||
}
|
||||
});
|
||||
|
||||
it("should override npm dependency by matching workspace", async () => {
|
||||
|
||||
Reference in New Issue
Block a user