Files
bun.sh/test/js/node/util/util-getsystemerrorsmap.test.ts
2025-09-22 10:43:34 +00:00

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