12345678910111213141516171819202122232425262728293031323334353637383940 |
- discard """
- cmd: "nim $target $options --excessiveStackTrace:off $file"
- output: '''true'''
- """
- const expected = """
- tfailedassert_stacktrace.nim(35) tfailedassert_stacktrace
- tfailedassert_stacktrace.nim(34) foo
- assertions.nim(*) failedAssertImpl
- assertions.nim(*) raiseAssert
- fatal.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:
- proc foo() =
- assert(false)
- foo()
- except AssertionError:
- let e = getCurrentException()
- let trace = e.getStackTrace
- echo tmatch(trace, expected)
|