Change node-http test so it doesn't emit annotation

This commit is contained in:
Ashcon Partovi
2024-05-13 14:37:42 -07:00
parent c0c6d0fa27
commit 998c4ca0a7
3 changed files with 39 additions and 18 deletions

View File

@@ -983,24 +983,6 @@ describe("node:http", () => {
});
});
test("test server internal error, issue#4298", done => {
const server = createServer((req, res) => {
throw Error("throw an error here.");
});
server.listen({ port: 0 }, async (_err, host, port) => {
try {
await fetch(`http://${host}:${port}`).then(res => {
expect(res.status).toBe(500);
done();
});
} catch (err) {
done(err);
} finally {
server.close();
}
});
});
test("test unix socket server", done => {
const socketPath = `${tmpdir()}/bun-server-${Math.random().toString(32)}.sock`;
const server = createServer((req, res) => {

View File

@@ -0,0 +1,15 @@
import { createServer } from "node:http";
import { isIPv6 } from "node:net";
const server = createServer((req, res) => {
throw new Error("Oops!");
});
server.listen({ port: 0 }, async (err, host, port) => {
if (err) {
console.error(err);
process.exit(1);
}
const hostname = isIPv6(host) ? `[${host}]` : host;
process.send(`http://${hostname}:${port}/`);
});

View File

@@ -0,0 +1,24 @@
import { test, expect } from "bun:test";
import { spawn } from "bun";
import { bunExe, bunEnv } from "harness";
test("node:http should not crash when server throws", async () => {
const { promise, resolve, reject } = Promise.withResolvers();
await using server = spawn({
cwd: import.meta.dirname,
cmd: [bunExe(), "04298.fixture.js"],
env: bunEnv,
stderr: "pipe",
ipc(url) {
resolve(url);
},
onExit(exitCode, signalCode) {
if (signalCode || exitCode !== 0) {
reject(new Error(`process exited with code ${signalCode || exitCode}`));
}
},
});
const url = await promise;
const response = await fetch(url);
expect(response.status).toBe(500);
});