mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
## Summary - Refactor 16 test files to use async `Bun.spawn` instead of `Bun.spawnSync` - Wrap tests in `describe.concurrent` blocks for parallel execution - Use `await using` for automatic resource cleanup ## Performance Improvement | Test File | Before | After | Improvement | |-----------|--------|-------|-------------| | `node-module-module.test.js` (28 tests) | ~325ms | ~185ms | **43% faster** | | `non-english-import.test.js` (3 tests) | ~238ms | ~157ms | **34% faster** | ## Files Changed - `test/cli/run/commonjs-invalid.test.ts` - `test/cli/run/commonjs-no-export.test.ts` - `test/cli/run/empty-file.test.ts` - `test/cli/run/jsx-symbol-collision.test.ts` - `test/cli/run/run-cjs.test.ts` - `test/cli/run/run-extensionless.test.ts` - `test/cli/run/run-shell.test.ts` - `test/cli/run/run-unicode.test.ts` - `test/js/bun/resolve/non-english-import.test.js` - `test/js/node/module/node-module-module.test.js` - `test/regression/issue/00631.test.ts` - `test/regression/issue/03216.test.ts` - `test/regression/issue/03830.test.ts` - `test/regression/issue/04011.test.ts` - `test/regression/issue/04893.test.ts` - `test/regression/issue/hashbang-still-works.test.ts` ## Test plan - [x] All refactored tests pass with `USE_SYSTEM_BUN=1 bun test <file>` 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Bot <claude-bot@bun.sh> Co-authored-by: Claude <noreply@anthropic.com>
62 lines
1.5 KiB
TypeScript
62 lines
1.5 KiB
TypeScript
// https://github.com/oven-sh/bun/issues/3216
|
|
import { describe, expect, test } from "bun:test";
|
|
import { writeFileSync } from "fs";
|
|
import { bunEnv, bunExe, tmpdirSync } from "harness";
|
|
import { join } from "path";
|
|
|
|
describe.concurrent("issue/03216", () => {
|
|
test("runtime directory caching gets invalidated", async () => {
|
|
const tmp = tmpdirSync();
|
|
writeFileSync(
|
|
join(tmp, "index.ts"),
|
|
`const file = \`\${import.meta.dir}/temp.mjs\`;
|
|
const file2 = \`\${import.meta.dir}/second.mjs\`;
|
|
|
|
import { existsSync, unlinkSync, writeFileSync } from "fs";
|
|
|
|
if (existsSync(file) || existsSync(file2)) {
|
|
console.log("temp.mjs cannot exist before running this script");
|
|
try { unlinkSync(file); } catch {}
|
|
try { unlinkSync(file2); } catch {}
|
|
process.exit(2);
|
|
}
|
|
|
|
writeFileSync(file, "export default 1;");
|
|
|
|
try {
|
|
const module = await import(file);
|
|
console.log(module.default);
|
|
} finally {
|
|
unlinkSync(file);
|
|
}
|
|
|
|
writeFileSync(file2, "export default 2;");
|
|
|
|
try {
|
|
const module = await import(file2);
|
|
console.log(module.default);
|
|
} finally {
|
|
unlinkSync(file2);
|
|
}
|
|
`,
|
|
);
|
|
|
|
await using proc = Bun.spawn({
|
|
cmd: [bunExe(), "run", join(tmp, "index.ts")],
|
|
cwd: tmp,
|
|
env: bunEnv,
|
|
stdout: "pipe",
|
|
stderr: "pipe",
|
|
});
|
|
|
|
const [stdout, stderr, exitCode] = await Promise.all([proc.stdout.text(), proc.stderr.text(), proc.exited]);
|
|
|
|
if (exitCode !== 0) {
|
|
console.log(stderr);
|
|
}
|
|
|
|
expect(stdout).toBe("1\n2\n");
|
|
expect(exitCode).toBe(0);
|
|
});
|
|
});
|