Files
bun.sh/test/integration/esbuild/esbuild.test.ts
Dylan Conway aad4d800ff add "configVersion" to bun.lock(b) (#24236)
### 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>
2025-11-03 22:20:07 -08:00

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);
});
});