Skip to content

Commit

Permalink
feat: add overloaded form of unit test declaration (denoland/std#563)
Browse files Browse the repository at this point in the history
  • Loading branch information
bartlomieju authored and ry committed Aug 14, 2019
1 parent eab0647 commit d928c0c
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
21 changes: 18 additions & 3 deletions testing/mod.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,24 @@ function filter(name: string): boolean {
}
}

export function test(t: TestDefinition | TestFunction): void {
const fn: TestFunction = typeof t === "function" ? t : t.fn;
const name: string = t.name;
export function test(t: TestDefinition): void;
export function test(fn: TestFunction): void;
export function test(name: string, fn: TestFunction): void;
export function test(
t: string | TestDefinition | TestFunction,
fn?: TestFunction
): void {
let name: string;

if (typeof t === "string") {
if (!fn) {
throw new Error("Missing test function");
}
name = t;
} else {
fn = typeof t === "function" ? t : t.fn;
name = t.name;
}

if (!name) {
throw new Error("Test function may not be anonymous");
Expand Down
5 changes: 5 additions & 0 deletions testing/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -263,4 +263,9 @@ test(async function testingThrowsAsyncMsgNotIncludes(): Promise<void> {
assert(didThrow);
});

test("test fn overloading", (): void => {
// just verifying that you can use this test definition syntax
assert(true);
});

runIfMain(import.meta);

0 comments on commit d928c0c

Please sign in to comment.