mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 18:38:55 +00:00
78 lines
2.4 KiB
TypeScript
78 lines
2.4 KiB
TypeScript
import { expect, test } from "bun:test";
|
|
import util from "node:util";
|
|
|
|
test("util.getSystemErrorMap() returns a Map", () => {
|
|
const errorMap = util.getSystemErrorMap();
|
|
expect(errorMap).toBeInstanceOf(Map);
|
|
expect(errorMap.size).toBeGreaterThan(0);
|
|
});
|
|
|
|
test("util.getSystemErrorMap() contains expected error codes", () => {
|
|
const errorMap = util.getSystemErrorMap();
|
|
|
|
// Test some common error codes
|
|
expect(errorMap.has(-2)).toBe(true); // ENOENT
|
|
expect(errorMap.has(-13)).toBe(true); // EACCES
|
|
expect(errorMap.has(-98)).toBe(true); // EADDRINUSE
|
|
expect(errorMap.has(-111)).toBe(true); // ECONNREFUSED
|
|
|
|
// Test special error codes
|
|
expect(errorMap.has(-4095)).toBe(true); // EOF
|
|
expect(errorMap.has(-4094)).toBe(true); // UNKNOWN
|
|
});
|
|
|
|
test("util.getSystemErrorMap() values have correct structure", () => {
|
|
const errorMap = util.getSystemErrorMap();
|
|
|
|
// Check ENOENT error
|
|
const enoent = errorMap.get(-2);
|
|
expect(Array.isArray(enoent)).toBe(true);
|
|
expect(enoent).toHaveLength(2);
|
|
expect(enoent[0]).toBe("ENOENT");
|
|
expect(enoent[1]).toBe("no such file or directory");
|
|
|
|
// Check EACCES error
|
|
const eacces = errorMap.get(-13);
|
|
expect(Array.isArray(eacces)).toBe(true);
|
|
expect(eacces).toHaveLength(2);
|
|
expect(eacces[0]).toBe("EACCES");
|
|
expect(eacces[1]).toBe("permission denied");
|
|
|
|
// Check EADDRINUSE error
|
|
const eaddrinuse = errorMap.get(-98);
|
|
expect(Array.isArray(eaddrinuse)).toBe(true);
|
|
expect(eaddrinuse).toHaveLength(2);
|
|
expect(eaddrinuse[0]).toBe("EADDRINUSE");
|
|
expect(eaddrinuse[1]).toBe("address already in use");
|
|
});
|
|
|
|
test("util.getSystemErrorMap() returns the same instance", () => {
|
|
const map1 = util.getSystemErrorMap();
|
|
const map2 = util.getSystemErrorMap();
|
|
expect(map1).toBe(map2); // Should return the same cached instance
|
|
});
|
|
|
|
test("util.getSystemErrorMap() matches Node.js output", () => {
|
|
const bunMap = util.getSystemErrorMap();
|
|
|
|
// Run Node.js to get its error map for comparison
|
|
const proc = Bun.spawnSync({
|
|
cmd: [
|
|
"node",
|
|
"-e",
|
|
"console.log(JSON.stringify([...require('node:util').getSystemErrorMap().entries()].map((v) => [v[0], v[1][0]])));",
|
|
],
|
|
stdio: ["ignore", "pipe", "pipe"],
|
|
});
|
|
|
|
const nodeErrors = JSON.parse(proc.stdout.toString());
|
|
|
|
// Check that all Node.js errors are present in Bun's map
|
|
for (const [code, name] of nodeErrors) {
|
|
const bunError = bunMap.get(code);
|
|
if (bunError) {
|
|
expect(bunError[0]).toBe(name);
|
|
}
|
|
}
|
|
});
|