Spracherkennung für: .ts vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
import { describe, expect, it } from "vitest";
import { sameFileIdentity, type FileIdentityStat } from "./file-identity.js";
function stat(dev: number | bigint, ino: number | bigint): FileIdentityStat {
return { dev, ino };
}
describe("sameFileIdentity", () => {
it.each([
{
name: "accepts exact dev+ino match",
left: stat(7, 11),
right: stat(7, 11),
platform: "linux" as const,
expected: true,
},
{
name: "rejects inode mismatch",
left: stat(7, 11),
right: stat(7, 12),
platform: "linux" as const,
expected: false,
},
{
name: "rejects dev mismatch on non-windows",
left: stat(7, 11),
right: stat(8, 11),
platform: "linux" as const,
expected: false,
},
{
name: "keeps dev strictness on linux when one side is zero",
left: stat(0, 11),
right: stat(8, 11),
platform: "linux" as const,
expected: false,
},
{
name: "accepts win32 dev mismatch when either side is 0",
left: stat(0, 11),
right: stat(8, 11),
platform: "win32" as const,
expected: true,
},
{
name: "accepts win32 dev mismatch when right side is 0",
left: stat(7, 11),
right: stat(0, 11),
platform: "win32" as const,
expected: true,
},
{
name: "keeps dev strictness on win32 when both dev values are non-zero",
left: stat(7, 11),
right: stat(8, 11),
platform: "win32" as const,
expected: false,
},
{
name: "handles bigint stats",
left: stat(0n, 11n),
right: stat(8n, 11n),
platform: "win32" as const,
expected: true,
},
])("$name", ({ left, right, platform, expected }) => {
expect(sameFileIdentity(left, right, platform)).toBe(expected);
});
});