From d615f0ff82f5b2b530940a21a61e5b4b08b1d1f4 Mon Sep 17 00:00:00 2001 From: Rob Waller Date: Tue, 23 Jun 2020 15:47:09 +0100 Subject: fix(std/testing): assertThrows gracefully fails if non-Error thrown (#6330) --- std/testing/asserts_test.ts | 83 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) (limited to 'std/testing/asserts_test.ts') diff --git a/std/testing/asserts_test.ts b/std/testing/asserts_test.ts index 36d054356..8b79ddf8a 100644 --- a/std/testing/asserts_test.ts +++ b/std/testing/asserts_test.ts @@ -409,3 +409,86 @@ Deno.test({ ); }, }); + +Deno.test("Assert Throws Non-Error Fail", () => { + assertThrows( + () => { + assertThrows( + () => { + throw "Panic!"; + }, + String, + "Panic!" + ); + }, + AssertionError, + "A non-Error object was thrown." + ); + + assertThrows( + () => { + assertThrows(() => { + throw null; + }); + }, + AssertionError, + "A non-Error object was thrown." + ); + + assertThrows( + () => { + assertThrows(() => { + throw undefined; + }); + }, + AssertionError, + "A non-Error object was thrown." + ); +}); + +Deno.test("Assert Throws Async Non-Error Fail", () => { + assertThrowsAsync( + () => { + return assertThrowsAsync( + () => { + return Promise.reject("Panic!"); + }, + String, + "Panic!" + ); + }, + AssertionError, + "A non-Error object was thrown or rejected." + ); + + assertThrowsAsync( + () => { + return assertThrowsAsync(() => { + return Promise.reject(null); + }); + }, + AssertionError, + "A non-Error object was thrown or rejected." + ); + + assertThrowsAsync( + () => { + return assertThrowsAsync(() => { + return Promise.reject(undefined); + }); + }, + AssertionError, + "A non-Error object was thrown or rejected." + ); + + assertThrowsAsync( + () => { + return assertThrowsAsync(() => { + throw undefined; + return Promise.resolve("Ok!"); + }); + }, + AssertionError, + "A non-Error object was thrown or rejected." + ); +}); -- cgit v1.2.3