Files
reverse-engineering-anything/tests/conformance/package/packedTarListing.test.ts
T
morluto dcee59f273 test: strengthen independent oracles and consolidate boundary coverage
Require delivered facts, exact cancellation and malformed-input boundaries, and independent metadata expectations. Transfer unique assertions into stronger keepers before removing duplicate cases and overwritten fixture writes; preserve all consumed core fixture bytes.

Validation: 1,190 focused tests passed with 39 platform-dependent skips; 134 composition and conformance tests passed. Typecheck, lint, formatting, discovery and Knip passed. Independent preservation reviews and targeted regression controls passed.
2026-11-10 17:03:59 -05:00

55 lines
1.9 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { parseTarListing } from "../../../scripts/lib/verify-package-listing.mjs";
/**
* `verify-packed-bridge.mjs` compares these members exactly
* (`packedFiles.includes(path)`), so a retained `\r` reports a shipped bridge
* as omitted. See issue #4128.
*/
const packedBridges = [
"package/bridge/hopper_bridge.py",
"package/bridge/cutter/rea_bridge.py",
"package/bridge/ghidra/ReaGhidraBridge.java",
"package/bridge/ghidra/ReaGhidraBundleActivator.java",
];
const listing = (lineEnding: string) =>
["package/package.json", ...packedBridges, "package/skills/rea/SKILL.md"]
.map((member) => `${member}${lineEnding}`)
.join("");
describe("packed tar listing", () => {
it("keeps exact member identities when Windows tar emits CRLF", () => {
const packedFiles = parseTarListing(listing("\r\n"));
for (const path of packedBridges) expect(packedFiles).toContain(path);
expect(packedFiles.some((member) => member.includes("\r"))).toBe(false);
});
it("keeps exact member identities on POSIX listings", () => {
const packedFiles = parseTarListing(listing("\n"));
for (const path of packedBridges) expect(packedFiles).toContain(path);
});
it("drops the empty member left by the trailing line ending", () => {
expect(parseTarListing(listing("\r\n"))).toHaveLength(6);
expect(parseTarListing(listing("\n"))).toHaveLength(6);
expect(parseTarListing("")).toEqual([]);
});
it("preserves member strings beyond the line ending", () => {
expect(parseTarListing("package/a b/c d.py\r\npackage/e.py\r\n")).toEqual([
"package/a b/c d.py",
"package/e.py",
]);
});
it("keeps a literal CR at the end of a filename in an LF listing", () => {
// One listing has one separator; a bare LF makes CR bytes filename bytes.
expect(parseTarListing("package/a\r\npackage/b\n")).toEqual([
"package/a\r",
"package/b",
]);
});
});