diff options
Diffstat (limited to 'lib/pure/unittest.nim')
-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: |