summaryrefslogtreecommitdiff
path: root/cli/js/test_util.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/js/test_util.ts')
-rw-r--r--cli/js/test_util.ts32
1 files changed, 32 insertions, 0 deletions
diff --git a/cli/js/test_util.ts b/cli/js/test_util.ts
index 4115bb5de..a546fa5c5 100644
--- a/cli/js/test_util.ts
+++ b/cli/js/test_util.ts
@@ -296,3 +296,35 @@ testPerm({ read: true }, async function parsingUnitTestOutput(): Promise<void> {
assertEquals(result.actual, undefined);
assertEquals(result.expected, undefined);
});
+
+/*
+ * Ensure all unit test files (e.g. xxx_test.ts) are present as imports in
+ * cli/js/unit_tests.ts as it is easy to miss this out
+ */
+testPerm(
+ { read: true },
+ async function assertAllUnitTestFilesImported(): Promise<void> {
+ const directoryTestFiles = Deno.readDirSync("./cli/js")
+ .map(k => k.name)
+ .filter(file => file.endsWith("_test.ts"));
+ const unitTestsFile: Uint8Array = Deno.readFileSync(
+ "./cli/js/unit_tests.ts"
+ );
+ const importLines = new TextDecoder("utf-8")
+ .decode(unitTestsFile)
+ .split("\n")
+ .filter(line => line.startsWith("import") && line.includes("_test.ts"));
+ const importedTestFiles = importLines.map(
+ relativeFilePath => relativeFilePath.match(/\/([^\/]+)";/)[1]
+ );
+
+ directoryTestFiles.forEach(dirFile => {
+ if (!importedTestFiles.includes(dirFile)) {
+ throw new Error(
+ "cil/js/unit_tests.ts is missing import of test file: cli/js/" +
+ dirFile
+ );
+ }
+ });
+ }
+);