Release Archive Tools 0.1.0

This commit is contained in:
2026-09-01 02:42:42 +02:00
commit a49ec6b17a
77 changed files with 11528 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
// @vitest-environment node
import { describe, expect, it } from "vitest";
import { assessArchivePath } from "../../src/archive/paths";
describe("archive path policy", () => {
it.each([
"../escape.txt",
"/absolute.txt",
"C:/drive.txt",
"safe/../../escape",
"CON",
"file.txt:stream",
"trailing. ",
"invoice\u202egnp.exe",
])("blocks unsafe path %s", (path) =>
expect(assessArchivePath(path).safe).toBe(false),
);
it("normalizes Unicode and treats backslashes as cross-platform separators", () => {
const result = assessArchivePath("Folder\\cafe\u0301.txt");
expect(result.normalized).toBe("Folder/café.txt");
expect(result.safe).toBe(true);
expect(result.issues.map((issue) => issue.code)).toContain(
"BACKSLASH_PATH",
);
});
it("produces a conservative case-insensitive collision key", () => {
expect(assessArchivePath("Folder/Report.TXT").collisionKey).toBe(
assessArchivePath("folder/report.txt").collisionKey,
);
});
});