aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/run-test-manually.yml2
-rw-r--r--scripts/bun-test.ts40
-rw-r--r--scripts/package.json3
3 files changed, 28 insertions, 17 deletions
diff --git a/.github/workflows/run-test-manually.yml b/.github/workflows/run-test-manually.yml
index 7c799683f..6609b7932 100644
--- a/.github/workflows/run-test-manually.yml
+++ b/.github/workflows/run-test-manually.yml
@@ -37,4 +37,4 @@ jobs:
bun install
bun install --cwd test/bun.js
bun install --cwd test/bun.js/third-party/body-parser-test
- bun run scripts/bun-test.ts test/ --isolated
+ bunx ts-node --esm scripts/bun-test.ts --isolated test/
diff --git a/scripts/bun-test.ts b/scripts/bun-test.ts
index f3905aca4..a88535634 100644
--- a/scripts/bun-test.ts
+++ b/scripts/bun-test.ts
@@ -1,5 +1,6 @@
-import { readdirSync, writeSync, fsyncSync, appendFileSync } from "node:fs";
import { join, basename } from "node:path";
+import { readdirSync, writeSync, fsyncSync, appendFileSync } from "node:fs";
+import { spawn } from "node:child_process";
export { parseTest, runTest, formatTest };
@@ -206,7 +207,7 @@ function parseInfo(line: string): TestInfo | undefined {
return {
name,
version,
- revision: Bun.revision.startsWith(revision) ? Bun.revision : revision,
+ revision: "Bun" in globalThis && Bun.revision.startsWith(revision) ? Bun.revision : revision,
};
}
@@ -393,24 +394,31 @@ async function* runTest(options: RunTestOptions): AsyncGenerator<RunTestResult,
}
}
const runSingleTest = async (args: string[]) => {
- const runner = Bun.spawn({
+ const runner = spawn("bun", ["test", ...args], {
cwd,
- cmd: ["bun", "test", ...args],
env: {
...process.env,
"FORCE_COLOR": "1",
},
- stdout: "pipe",
- stderr: "pipe",
+ stdio: "pipe",
+ });
+ let stderr = "";
+ let stdout = "";
+ const exitCode = await new Promise<number | null>(resolve => {
+ runner.stdout.on("data", (data: Buffer) => {
+ stdout += data.toString("utf-8");
+ });
+ runner.stderr.on("data", (data: Buffer) => {
+ stderr += data.toString("utf-8");
+ });
+ runner.on("error", ({ name, message }) => {
+ stderr += `${name}: ${message}`;
+ resolve(null);
+ });
+ runner.on("exit", exitCode => {
+ resolve(exitCode);
+ });
});
- const exitCode = await Promise.race([
- runner.exited,
- Bun.sleep(timeout).then(() => {
- runner.kill();
- return null;
- }),
- ]);
- const [stdout, stderr] = await Promise.all([readStream(runner.stdout), readStream(runner.stderr)]);
const lines = stderr.split("\n").map(stripAnsi);
const result = parseTest(lines, { cwd, paths });
return {
@@ -539,7 +547,7 @@ ${tests}`;
}
function printTest(result: RunTestResult): void {
- const isAction = !!process.env["GITHUB_ACTIONS"] || true;
+ const isAction = !!process.env["GITHUB_ACTIONS"];
const isGroup = result.files.length === 1;
if (isGroup) {
const { file, status } = result.files[0];
@@ -628,6 +636,6 @@ async function main() {
process.exit(0);
}
-if (import.meta.main) {
+if (import.meta.main || import.meta.url === `file://${process.argv[1]}`) {
await main();
}
diff --git a/scripts/package.json b/scripts/package.json
new file mode 100644
index 000000000..3dbc1ca59
--- /dev/null
+++ b/scripts/package.json
@@ -0,0 +1,3 @@
+{
+ "type": "module"
+}