mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
### What does this PR do? Adds `"configVersion"` to bun.lock(b). The version will be used to keep default settings the same if they would be breaking across bun versions. fixes ENG-21389 fixes ENG-21388 ### How did you verify your code works? TODO: - [ ] new project - [ ] existing project without configVersion - [ ] existing project with configVersion - [ ] same as above but with bun.lockb - [ ] configVersion@0 defaults to hoisted linker - [ ] new projects use isolated linker --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
193 lines
5.3 KiB
TypeScript
193 lines
5.3 KiB
TypeScript
import { spawn } from "bun";
|
|
import { beforeAll, describe, expect, setDefaultTimeout, test } from "bun:test";
|
|
import { cp, rm, writeFile } from "fs/promises";
|
|
import { bunExe, bunEnv as env, tempDir } from "harness";
|
|
import { join } from "path";
|
|
|
|
beforeAll(() => {
|
|
setDefaultTimeout(1000 * 60 * 5);
|
|
});
|
|
|
|
describe.concurrent("esbuild integration test", () => {
|
|
test("install and use esbuild", async () => {
|
|
using dir = tempDir("esbuild-test", {
|
|
"package.json": JSON.stringify({
|
|
name: "bun-esbuild-test",
|
|
version: "1.0.0",
|
|
}),
|
|
});
|
|
const packageDir = dir + "";
|
|
|
|
var { stdout, stderr, exited } = spawn({
|
|
cmd: [bunExe(), "install", "esbuild@0.19.8"],
|
|
cwd: packageDir,
|
|
stdout: "pipe",
|
|
stdin: "pipe",
|
|
stderr: "pipe",
|
|
env,
|
|
});
|
|
|
|
var err = await stderr.text();
|
|
var out = await stdout.text();
|
|
expect(err).toContain("Saved lockfile");
|
|
expect(out).toContain("esbuild@0.19.8");
|
|
expect(await exited).toBe(0);
|
|
|
|
({ stdout, stderr, exited } = spawn({
|
|
cmd: [bunExe(), "esbuild", "--version"],
|
|
cwd: packageDir,
|
|
stdout: "pipe",
|
|
stdin: "pipe",
|
|
stderr: "pipe",
|
|
env,
|
|
}));
|
|
|
|
err = await stderr.text();
|
|
out = await stdout.text();
|
|
expect(err).toBe("");
|
|
expect(out).toContain("0.19.8");
|
|
expect(await exited).toBe(0);
|
|
});
|
|
|
|
test("install and use estrella", async () => {
|
|
using dir = tempDir("esbuild-estrella-test", {
|
|
"package.json": JSON.stringify({
|
|
name: "bun-esbuild-estrella-test",
|
|
version: "1.0.0",
|
|
}),
|
|
});
|
|
const packageDir = dir + "";
|
|
|
|
let { stdout, stderr, exited } = spawn({
|
|
cmd: [bunExe(), "install", "estrella@1.4.1"],
|
|
cwd: packageDir,
|
|
stdout: "pipe",
|
|
stdin: "pipe",
|
|
stderr: "pipe",
|
|
env,
|
|
});
|
|
let exitCode = 0;
|
|
let err = "";
|
|
let out = "";
|
|
|
|
[err, out, exitCode] = await Promise.all([new Response(stderr).text(), new Response(stdout).text(), exited]);
|
|
expect(err).toContain("Saved lockfile");
|
|
expect(out).toContain("estrella@1.4.1");
|
|
expect(exitCode).toBe(0);
|
|
|
|
({ stdout, stderr, exited } = spawn({
|
|
cmd: [bunExe(), "estrella", "--estrella-version"],
|
|
cwd: packageDir,
|
|
stdout: "pipe",
|
|
stdin: "pipe",
|
|
stderr: "pipe",
|
|
env,
|
|
}));
|
|
|
|
[err, out, exitCode] = await Promise.all([new Response(stderr).text(), new Response(stdout).text(), exited]);
|
|
expect(err).toBe("");
|
|
expect(out).toContain("1.4.1");
|
|
expect(exitCode).toBe(0);
|
|
|
|
await cp(join(import.meta.dir, "build-file.js"), join(packageDir, "build-file.js"));
|
|
|
|
({ stdout, stderr, exited } = spawn({
|
|
cmd: [bunExe(), "estrella", "build-file.js"],
|
|
cwd: packageDir,
|
|
stdout: "pipe",
|
|
stdin: "pipe",
|
|
stderr: "pipe",
|
|
env,
|
|
}));
|
|
|
|
[err, out, exitCode] = await Promise.all([stderr.text(), stdout.text(), exited]);
|
|
|
|
await rm(join(packageDir, "node_modules"), { recursive: true, force: true });
|
|
await rm(join(packageDir, "bun.lockb"), { force: true });
|
|
|
|
await writeFile(
|
|
join(packageDir, "package.json"),
|
|
JSON.stringify({
|
|
name: "bun-esbuild-estrella-test",
|
|
version: "1.0.0",
|
|
dependencies: {
|
|
"estrella": "1.4.1",
|
|
// different version of esbuild
|
|
"esbuild": "0.19.8",
|
|
},
|
|
}),
|
|
);
|
|
|
|
({ stdout, stderr, exited } = spawn({
|
|
cmd: [bunExe(), "install"],
|
|
cwd: packageDir,
|
|
stdout: "pipe",
|
|
stdin: "pipe",
|
|
stderr: "pipe",
|
|
env,
|
|
}));
|
|
|
|
[err, out, exitCode] = await Promise.all([stderr.text(), stdout.text(), exited]);
|
|
expect(err).toContain("Saved lockfile");
|
|
expect(out).toContain("estrella@1.4.1");
|
|
expect(out).toContain("esbuild@0.19.8");
|
|
expect(exitCode).toBe(0);
|
|
|
|
({ stdout, stderr, exited } = spawn({
|
|
cmd: [bunExe(), "estrella", "--estrella-version"],
|
|
cwd: packageDir,
|
|
stdout: "pipe",
|
|
stdin: "pipe",
|
|
stderr: "pipe",
|
|
env,
|
|
}));
|
|
|
|
[err, out, exitCode] = await Promise.all([stderr.text(), stdout.text(), exited]);
|
|
expect(err).toBe("");
|
|
expect(out).toContain("1.4.1");
|
|
expect(exitCode).toBe(0);
|
|
|
|
({ stdout, stderr, exited } = spawn({
|
|
cmd: [bunExe(), "esbuild", "--version"],
|
|
cwd: packageDir,
|
|
stdout: "pipe",
|
|
stdin: "pipe",
|
|
stderr: "pipe",
|
|
env,
|
|
}));
|
|
|
|
[err, out, exitCode] = await Promise.all([stderr.text(), stdout.text(), exited]);
|
|
expect(err).toBe("");
|
|
expect(out).toContain("0.19.8");
|
|
expect(exitCode).toBe(0);
|
|
|
|
({ stdout, stderr, exited } = spawn({
|
|
cmd: [bunExe(), "esbuild", "--version"],
|
|
cwd: join(packageDir, "node_modules/estrella"),
|
|
stdout: "pipe",
|
|
stdin: "pipe",
|
|
stderr: "pipe",
|
|
env,
|
|
}));
|
|
|
|
[err, out, exitCode] = await Promise.all([stderr.text(), stdout.text(), exited]);
|
|
expect(err).toBe("");
|
|
expect(out).toContain("0.11.23");
|
|
expect(exitCode).toBe(0);
|
|
|
|
({ stdout, stderr, exited } = spawn({
|
|
cmd: [bunExe(), "estrella", "build-file.js"],
|
|
cwd: packageDir,
|
|
stdout: "pipe",
|
|
stdin: "pipe",
|
|
stderr: "pipe",
|
|
env,
|
|
}));
|
|
|
|
[err, out, exitCode] = await Promise.all([stderr.text(), stdout.text(), exited]);
|
|
expect(err).toBe("");
|
|
expect(out).toBe('console.log("hello"),console.log("estrella");\n');
|
|
expect(exitCode).toBe(0);
|
|
});
|
|
});
|