import fs from "node:fs" ;
import path from "node:path" ;
import { describe, expect, it } from "vitest" ;
import {
collectFilesSync,
isCodeFile,
relativeToCwd,
toPosixPath,
} from "../../scripts/check-file-utils.js" ;
import { createScriptTestHarness } from "./test-helpers.js" ;
const { createTempDir } = createScriptTestHarness();
describe("scripts/check-file-utils isCodeFile" , () => {
it("accepts source files and skips declarations" , () => {
expect(isCodeFile("example.ts" )).toBe(true );
expect(isCodeFile("example.mjs" )).toBe(true );
expect(isCodeFile("example.d.ts" )).toBe(false );
});
});
describe("scripts/check-file-utils collectFilesSync" , () => {
it("collects matching files while skipping common generated dirs" , () => {
const rootDir = createTempDir("openclaw-check-file-utils-" );
fs.mkdirSync(path.join(rootDir, "src" , "nested" ), { recursive: true });
fs.mkdirSync(path.join(rootDir, "dist" ), { recursive: true });
fs.mkdirSync(path.join(rootDir, "docs" , ".generated" ), { recursive: true });
fs.writeFileSync(path.join(rootDir, "src" , "keep.ts" ), "" );
fs.writeFileSync(path.join(rootDir, "src" , "nested" , "keep.test.ts" ), "" );
fs.writeFileSync(path.join(rootDir, "dist" , "skip.ts" ), "" );
fs.writeFileSync(path.join(rootDir, "docs" , ".generated" , "skip.ts" ), "" );
const files = collectFilesSync(rootDir, {
includeFile: (filePath) => filePath.endsWith(".ts" ),
}).map((filePath) => toPosixPath(path.relative(rootDir, filePath)));
expect(files.toSorted((left, right) => left.localeCompare(right))).toEqual([
"src/keep.ts" ,
"src/nested/keep.test.ts" ,
]);
});
it("supports custom skipped directories" , () => {
const rootDir = createTempDir("openclaw-check-file-utils-" );
fs.mkdirSync(path.join(rootDir, "fixtures" ), { recursive: true });
fs.mkdirSync(path.join(rootDir, "src" ), { recursive: true });
fs.writeFileSync(path.join(rootDir, "fixtures" , "skip.ts" ), "" );
fs.writeFileSync(path.join(rootDir, "src" , "keep.ts" ), "" );
const files = collectFilesSync(rootDir, {
includeFile: (filePath) => filePath.endsWith(".ts" ),
skipDirNames: new Set(["fixtures" ]),
}).map((filePath) => toPosixPath(path.relative(rootDir, filePath)));
expect(files).toEqual(["src/keep.ts" ]);
});
});
describe("scripts/check-file-utils relativeToCwd" , () => {
it("renders repo-relative paths when possible" , () => {
expect(relativeToCwd(path.join(process.cwd(), "scripts" , "check-file-utils.ts" ))).toBe(
"scripts/check-file-utils.ts" ,
);
});
});
Messung V0.5 in Prozent C=98 H=98 G=97
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland