50 lines
1.9 KiB
TypeScript
50 lines
1.9 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { classifyDiskError } from "../src/main/fs-error";
|
|
import { isDebugFlagEnabled } from "../src/main/logger";
|
|
|
|
describe("classifyDiskError", () => {
|
|
it("maps ENOSPC from an error code to a disk-full reason", () => {
|
|
const err = Object.assign(new Error("write ENOSPC"), { code: "ENOSPC" });
|
|
expect(classifyDiskError(err)).toMatch(/Festplatte voll/);
|
|
});
|
|
|
|
it("maps EACCES from a code to a permission reason", () => {
|
|
const err = Object.assign(new Error("nope"), { code: "EACCES" });
|
|
expect(classifyDiskError(err)).toMatch(/Zugriff verweigert/);
|
|
});
|
|
|
|
it("lower-case codes are normalized", () => {
|
|
const err = Object.assign(new Error("x"), { code: "enospc" });
|
|
expect(classifyDiskError(err)).toMatch(/ENOSPC/);
|
|
});
|
|
|
|
it("falls back to scanning the message text when no code is present", () => {
|
|
expect(classifyDiskError(new Error("operation failed: ENOSPC on volume"))).toMatch(/Festplatte voll/);
|
|
});
|
|
|
|
it("handles a plain string error", () => {
|
|
expect(classifyDiskError("EROFS: read-only file system")).toMatch(/schreibgeschützt/);
|
|
});
|
|
|
|
it("returns null for an unrelated error", () => {
|
|
expect(classifyDiskError(new Error("write_drain_timeout"))).toBeNull();
|
|
expect(classifyDiskError(new Error("premature close"))).toBeNull();
|
|
expect(classifyDiskError(null)).toBeNull();
|
|
expect(classifyDiskError(undefined)).toBeNull();
|
|
});
|
|
});
|
|
|
|
describe("isDebugFlagEnabled", () => {
|
|
it("is true for affirmative values", () => {
|
|
for (const v of ["1", "true", "TRUE", "yes", "on", " on "]) {
|
|
expect(isDebugFlagEnabled(v)).toBe(true);
|
|
}
|
|
});
|
|
|
|
it("is false for empty/negative/garbage values", () => {
|
|
for (const v of [undefined, "", "0", "false", "off", "no", "maybe"]) {
|
|
expect(isDebugFlagEnabled(v)).toBe(false);
|
|
}
|
|
});
|
|
});
|