fix(build): discover unit tests under server/, not only src/

npm test is the only suite CI runs, and its discovery walked src/ alone, so
server/providers/transitHistory.test.mjs has never executed since it was
added. Its 8 tests pass, so this was silent coverage loss rather than a hidden
failure: the file reads like covered code in review and never ran anywhere.

Add server/ to the searched roots, and pin the property with a test that walks
the repository itself and compares the two sets, so a tree added later without
updating the roots fails loudly instead of going quiet.

Suite goes from 5090 to 5099 tests, 0 failures: the 8 tests in that file plus
the regression test added here.
This commit is contained in:
daikaginza committed 2026-09-28 11:45:36 +07:00
1 parent 81eb44340d
commit c87f007e34
2 files changed
+62 -3

No files matched your search

+12 -2
View File
@@ -21,9 +21,19 @@ export function assertNode24AllocationRuntime(version = process.versions.node) {
return version;
}
/**
* Directories this runner searches for `*.test.mjs`, in stable order.
*
* `server/` belongs here because provider modules own tests of their own: a
* suite placed beside the module it covers must run, and `npm test` is the only
* thing CI invokes, so a directory missing from this list is a suite that never
* runs anywhere. `unitTestRunner.test.mjs` asserts the list covers every test
* file in the repository, so adding a tree without adding it here fails.
*/
export const UNIT_TEST_ROOTS = Object.freeze(['src', 'server']);
/** Discover repository unit tests in stable path order. */
export function discoverUnitTestFiles(root = process.cwd()) {
const sourceRoot = path.join(root, 'src');
const files = [];
const visit = (directory) => {
for (const entry of readdirSync(directory, { withFileTypes: true })) {
@@ -34,7 +44,7 @@ export function discoverUnitTestFiles(root = process.cwd()) {
}
}
};
visit(sourceRoot);
for (const testRoot of UNIT_TEST_ROOTS) visit(path.join(root, testRoot));
return files.sort();
}