diff options
author | Chris Knight <cknight1234@gmail.com> | 2020-02-05 08:23:23 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-05 09:23:23 +0100 |
commit | a04e7270cdebb188ce5a1f779c5d2d56016a3f49 (patch) | |
tree | e4e16a8a3bba3f2311505b85fe67ebaff83557fc /cli/js/test_util.ts | |
parent | 55ea8546719579099a89132a5567919fd81742e9 (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.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 + ); + } + }); + } +); |