make tfailedassert_stacktrace.nim more robust
This commit is contained in:
parent
b9dc486db1
commit
e4902a4a35
1 changed files with 27 additions and 8 deletions
|
|
@ -1,13 +1,31 @@
|
||||||
discard """
|
discard """
|
||||||
output: '''
|
output: '''true'''
|
||||||
tfailedassert_stacktrace.nim(16) tfailedassert_stacktrace
|
|
||||||
tfailedassert_stacktrace.nim(15) foo
|
|
||||||
system.nim(3778) failedAssertImpl
|
|
||||||
system.nim(3771) raiseAssert
|
|
||||||
system.nim(2818) sysFatal
|
|
||||||
'''
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
const expected = """
|
||||||
|
tfailedassert_stacktrace.nim(34) tfailedassert_stacktrace
|
||||||
|
tfailedassert_stacktrace.nim(33) foo
|
||||||
|
system.nim(*) failedAssertImpl
|
||||||
|
system.nim(*) raiseAssert
|
||||||
|
system.nim(*) sysFatal"""
|
||||||
|
|
||||||
|
proc tmatch(x, p: string): bool =
|
||||||
|
var i = 0
|
||||||
|
var k = 0
|
||||||
|
while i < p.len:
|
||||||
|
if p[i] == '*':
|
||||||
|
let oldk = k
|
||||||
|
while k < x.len and x[k] in {'0'..'9'}: inc k
|
||||||
|
# no digit skipped?
|
||||||
|
if oldk == k: return false
|
||||||
|
inc i
|
||||||
|
elif k < x.len and p[i] == x[k]:
|
||||||
|
inc i
|
||||||
|
inc k
|
||||||
|
else:
|
||||||
|
return false
|
||||||
|
while k < x.len and x[k] in {' ', '\L', '\C'}: inc k
|
||||||
|
result = i >= p.len and k >= x.len
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
@ -16,4 +34,5 @@ try:
|
||||||
foo()
|
foo()
|
||||||
except AssertionError:
|
except AssertionError:
|
||||||
let e = getCurrentException()
|
let e = getCurrentException()
|
||||||
echo e.getStackTrace
|
let trace = e.getStackTrace
|
||||||
|
echo tmatch(trace, expected)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue