summaryrefslogtreecommitdiff
path: root/cli/js
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
parent55ea8546719579099a89132a5567919fd81742e9 (diff)
fix: Validate all tests included in unit_tests.ts (#3879)
Diffstat (limited to 'cli/js')
-rw-r--r--cli/js/dispatch_minimal_test.ts22
-rw-r--r--cli/js/test_util.ts32
-rw-r--r--cli/js/unit_tests.ts1
3 files changed, 46 insertions, 9 deletions
diff --git a/cli/js/dispatch_minimal_test.ts b/cli/js/dispatch_minimal_test.ts
index a4e729980..12c70d375 100644
--- a/cli/js/dispatch_minimal_test.ts
+++ b/cli/js/dispatch_minimal_test.ts
@@ -9,22 +9,26 @@ import {
const readErrorStackPattern = new RegExp(
`^.*
at unwrapResponse \\(.*dispatch_minimal\\.ts:.*\\)
- at Object.sendAsync \\(.*dispatch_minimal\\.ts:.*\\)
- at async Object\\.open \\(.*files\\.ts:.*\\).*$`,
+ at Object.sendAsyncMinimal \\(.*dispatch_minimal\\.ts:.*\\)
+ at async Object\\.read \\(.*files\\.ts:.*\\).*$`,
"ms"
);
test(async function sendAsyncStackTrace(): Promise<void> {
const buf = new Uint8Array(10);
- await Deno.read(10, "nonexistent.txt", buf)
- .then(unreachable)
- .catch((error): void => {
- assertMatch(error.stack, readErrorStackPattern);
- });
+ try {
+ await Deno.read(10, buf);
+ unreachable();
+ } catch (error) {
+ assertMatch(error.stack, readErrorStackPattern);
+ }
});
+
test(async function malformedMinimalControlBuffer(): Promise<void> {
// @ts-ignore
- const res = Deno.core.send(1, new Uint8Array([1, 2, 3, 4, 5]));
+ const readOpId = Deno.core.ops()["read"];
+ // @ts-ignore
+ const res = Deno.core.send(readOpId, new Uint8Array([1, 2, 3, 4, 5]));
const header = res.slice(0, 12);
const buf32 = new Int32Array(
header.buffer,
@@ -33,7 +37,7 @@ test(async function malformedMinimalControlBuffer(): Promise<void> {
);
const arg = buf32[1];
const result = buf32[2];
- const message = new TextDecoder().decode(res.slice(12));
+ const message = new TextDecoder().decode(res.slice(12)).trim();
assert(arg < 0);
assertEquals(result, Deno.ErrorKind.InvalidInput);
assertEquals(message, "Unparsable control buffer");
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
+ );
+ }
+ });
+ }
+);
diff --git a/cli/js/unit_tests.ts b/cli/js/unit_tests.ts
index 5aee5e91f..992169e55 100644
--- a/cli/js/unit_tests.ts
+++ b/cli/js/unit_tests.ts
@@ -14,6 +14,7 @@ import "./console_test.ts";
import "./copy_file_test.ts";
import "./custom_event_test.ts";
import "./dir_test.ts";
+import "./dispatch_minimal_test.ts";
import "./dispatch_json_test.ts";
import "./error_stack_test.ts";
import "./event_test.ts";