diff options
author | Timothee Cour <timothee.cour2@gmail.com> | 2021-02-13 00:51:46 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-13 09:51:46 +0100 |
commit | fff5819ee728aa62fd857982f799ecc0fac0fd5e (patch) | |
tree | 2623aa966ef8911c01f98e6a705fc0aa98373809 /lib | |
parent | 21e60b9a9705ac9cfa8b792d6d264bbaa75a76c7 (diff) | |
download | Nim-fff5819ee728aa62fd857982f799ecc0fac0fd5e.tar.gz |
fix #16978 unittest js foreign exception (#16998)
* fix #16978 unittest js foreign exception
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/unittest.nim | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/pure/unittest.nim b/lib/pure/unittest.nim index c387e14e1..21087e8ef 100644 --- a/lib/pure/unittest.nim +++ b/lib/pure/unittest.nim @@ -515,7 +515,9 @@ template suite*(name, body) {.dirty.} = finally: suiteEnded() -template exceptionTypeName(e: typed): string = $e.name +proc exceptionTypeName(e: ref Exception): string {.inline.} = + if e == nil: "<foreign exception>" + else: $e.name template test*(name, body) {.dirty.} = ## Define a single test case identified by `name`. @@ -552,8 +554,11 @@ template test*(name, body) {.dirty.} = let e = getCurrentException() let eTypeDesc = "[" & exceptionTypeName(e) & "]" checkpoint("Unhandled exception: " & getCurrentExceptionMsg() & " " & eTypeDesc) - var stackTrace {.inject.} = e.getStackTrace() - fail() + if e == nil: # foreign + fail() + else: + var stackTrace {.inject.} = e.getStackTrace() + fail() finally: if testStatusIMPL == TestStatus.FAILED: |