From a04e7270cdebb188ce5a1f779c5d2d56016a3f49 Mon Sep 17 00:00:00 2001 From: Chris Knight Date: Wed, 5 Feb 2020 08:23:23 +0000 Subject: fix: Validate all tests included in unit_tests.ts (#3879) --- cli/js/test_util.ts | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'cli/js/test_util.ts') 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 { 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 { + 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 + ); + } + }); + } +); -- cgit v1.2.3