summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoshiya Hinosawa <stibium121@gmail.com>2019-12-18 22:05:58 +0900
committerRy Dahl <ry@tinyclouds.org>2019-12-18 08:05:58 -0500
commitff6b514a7b1087e7e5f363305cce46b513a3e562 (patch)
tree188f1c55442ac6a8ffc1c0d6bab7ae7f98ffe9c7
parentbb24fb74ffe0bb35649e0adbb1473458c8abf71f (diff)
Improve empty test case error messages (#3514)
-rw-r--r--std/testing/mod.ts23
-rw-r--r--std/testing/test.ts30
2 files changed, 49 insertions, 4 deletions
diff --git a/std/testing/mod.ts b/std/testing/mod.ts
index 3b6386d5b..0d5d2702a 100644
--- a/std/testing/mod.ts
+++ b/std/testing/mod.ts
@@ -10,6 +10,7 @@ import {
yellow,
italic
} from "../fmt/colors.ts";
+import { assert } from "./asserts.ts";
export type TestFunction = () => void | Promise<void>;
export interface TestDefinition {
@@ -121,14 +122,28 @@ export function test(
throw new Error("Missing test function");
}
name = t;
+ if (!name) {
+ throw new Error("The name of test case can't be empty");
+ }
+ } else if (typeof t === "function") {
+ fn = t;
+ name = t.name;
+ if (!name) {
+ throw new Error("Test function can't be anonymous");
+ }
} else {
- fn = typeof t === "function" ? t : t.fn;
+ fn = t.fn;
+ if (!fn) {
+ throw new Error("Missing test function");
+ }
name = t.name;
+ if (!name) {
+ throw new Error("The name of test case can't be empty");
+ }
}
+ assert(!!name, "The name of test case shouldn't be empty");
+ assert(!!fn, "Test function shouldn't be empty");
- if (!name) {
- throw new Error("Test function may not be anonymous");
- }
if (filter(name)) {
candidates.push({ fn, name });
} else {
diff --git a/std/testing/test.ts b/std/testing/test.ts
index dd6d772f6..56eacdeed 100644
--- a/std/testing/test.ts
+++ b/std/testing/test.ts
@@ -260,4 +260,34 @@ test("test fn overloading", (): void => {
assert(true);
});
+test("The name of test case can't be empty", () => {
+ assertThrows(
+ () => {
+ test("", () => {});
+ },
+ Error,
+ "The name of test case can't be empty"
+ );
+ assertThrows(
+ () => {
+ test({
+ name: "",
+ fn: () => {}
+ });
+ },
+ Error,
+ "The name of test case can't be empty"
+ );
+});
+
+test("test function can't be anonymous", () => {
+ assertThrows(
+ () => {
+ test(function() {});
+ },
+ Error,
+ "Test function can't be anonymous"
+ );
+});
+
runIfMain(import.meta);