

















@@ -61,6 +61,19 @@ function writeFixtureFiles(root: string, files: Record<string, string | undefine
6161}
6262}
636364+function mockStatPermissionDeniedFor(filePath: string) {
65+const realStat = fs.stat;
66+return vi.spyOn(fs, "stat").mockImplementation(async (...args) => {
67+const pathArg = args[0];
68+if (typeof pathArg === "string" && pathArg === filePath) {
69+const err = new Error("EACCES: permission denied") as NodeJS.ErrnoException;
70+err.code = "EACCES";
71+throw err;
72+}
73+return await realStat(...args);
74+});
75+}
76+6477function expectRulePresence(findings: { ruleId: string }[], ruleId: string, expected: boolean) {
6578expect(findings.some((finding) => finding.ruleId === ruleId)).toBe(expected);
6679}
@@ -762,16 +775,7 @@ describe("scanDirectoryWithSummary", () => {
762775const filePath = path.join(root, "forbidden.js");
763776fsSync.writeFileSync(filePath, `export const x = 1;`);
764777765-const realStat = fs.stat;
766-const spy = vi.spyOn(fs, "stat").mockImplementation(async (...args) => {
767-const pathArg = args[0];
768-if (typeof pathArg === "string" && pathArg === filePath) {
769-const err = new Error("EACCES: permission denied") as NodeJS.ErrnoException;
770-err.code = "EACCES";
771-throw err;
772-}
773-return await realStat(...args);
774-});
778+const spy = mockStatPermissionDeniedFor(filePath);
775779776780try {
777781await expect(scanDirectory(root, { includeFiles: ["forbidden.js"] })).rejects.toMatchObject({
@@ -787,16 +791,7 @@ describe("scanDirectoryWithSummary", () => {
787791const filePath = path.join(root, "noperm.js");
788792fsSync.writeFileSync(filePath, `export const x = 1;`);
789793790-const realStat = fs.stat;
791-const spy = vi.spyOn(fs, "stat").mockImplementation(async (...args) => {
792-const pathArg = args[0];
793-if (typeof pathArg === "string" && pathArg === filePath) {
794-const err = new Error("EACCES: permission denied") as NodeJS.ErrnoException;
795-err.code = "EACCES";
796-throw err;
797-}
798-return await realStat(...args);
799-});
794+const spy = mockStatPermissionDeniedFor(filePath);
800795801796try {
802797await expect(scanDirectory(root)).rejects.toMatchObject({ code: "EACCES" });
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。