diff options
Diffstat (limited to 'cli/js/test_util.ts')
-rw-r--r-- | cli/js/test_util.ts | 32 |
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 + ); + } + }); + } +); |