import { describe, expect, it } from "vitest"; import { hostExecutableMarking } from "./hostExecutableMarking.js"; const file = (mode: number) => ({ mode, isFile: () => true }); const directory = (mode: number) => ({ mode, isFile: () => false }); describe("hostExecutableMarking", () => { it("marks Windows launchable files by extension because NTFS has no execute bit", () => { expect( hostExecutableMarking("C:\\scratch\\whoami.exe", file(0o666), "win32"), ).toBe(true); expect( hostExecutableMarking("C:\\scratch\\SETUP.CMD", file(0o444), "win32"), ).toBe(true); expect( hostExecutableMarking("C:\\scratch\\library.dll", file(0o666), "win32"), ).toBe(false); expect( hostExecutableMarking( "C:\\scratch\\tools.exe", directory(0o666), "win32", ), ).toBe(false); }); it("keeps POSIX permission bits authoritative regardless of extension", () => { expect(hostExecutableMarking("/scratch/tool", file(0o755), "linux")).toBe( true, ); expect( hostExecutableMarking("/scratch/whoami.exe", file(0o644), "darwin"), ).toBe(false); }); });