summaryrefslogtreecommitdiff
path: root/cli/js/test_util.ts
diff options
context:
space:
mode:
authorChris Knight <cknight1234@gmail.com>2020-02-05 08:23:23 +0000
committerGitHub <noreply@github.com>2020-02-05 09:23:23 +0100
commita04e7270cdebb188ce5a1f779c5d2d56016a3f49 (patch)
treee4e16a8a3bba3f2311505b85fe67ebaff83557fc /cli/js/test_util.ts
parent55ea8546719579099a89132a5567919fd81742e9 (diff)
fix: Validate all tests included in unit_tests.ts (#3879)
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
+ );
+ }
+ });
+ }
+);