mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-01 19:02:18 +00:00
* fix #16978 unittest js foreign exception
This commit is contained in:
@@ -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:
|
||||
|
||||
16
tests/js/tunittest_error2.nim
Normal file
16
tests/js/tunittest_error2.nim
Normal file
@@ -0,0 +1,16 @@
|
||||
discard """
|
||||
exitcode: 1
|
||||
outputsub: '''
|
||||
Unhandled exception: Cannot read property 'charCodeAt' of null [<foreign exception>]
|
||||
[FAILED] Bad test
|
||||
'''
|
||||
matrix: "-d:nodejs"
|
||||
targets: "js"
|
||||
joinable: false
|
||||
"""
|
||||
|
||||
# bug #16978
|
||||
import unittest
|
||||
test "Bad test":
|
||||
var x: cstring = nil
|
||||
let y = x[0]
|
||||
Reference in New Issue
Block a user