summary refs log tree commit diff stats
path: root/tests/assert
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2018-09-15 10:06:02 +0200
committerAraq <rumpf_a@web.de>2018-09-15 10:06:02 +0200
commite4902a4a3518c7c27818a4004218ed341394df6e (patch)
tree485ae0f361aec119a2ea9b40ce75b7e1ec867c95 /tests/assert
parentb9dc486db15bb1b4b6f3cef7626733b904d377f7 (diff)
downloadNim-e4902a4a3518c7c27818a4004218ed341394df6e.tar.gz
make tfailedassert_stacktrace.nim more robust
Diffstat (limited to 'tests/assert')
-rw-r--r--tests/assert/tfailedassert_stacktrace.nim35
1 files changed, 27 insertions, 8 deletions
diff --git a/tests/assert/tfailedassert_stacktrace.nim b/tests/assert/tfailedassert_stacktrace.nim
index 43171ef6c..6505f189c 100644
--- a/tests/assert/tfailedassert_stacktrace.nim
+++ b/tests/assert/tfailedassert_stacktrace.nim
@@ -1,13 +1,31 @@
 discard """
-  output: '''
-tfailedassert_stacktrace.nim(16) tfailedassert_stacktrace
-tfailedassert_stacktrace.nim(15) foo
-system.nim(3778)         failedAssertImpl
-system.nim(3771)         raiseAssert
-system.nim(2818)         sysFatal
-'''
+  output: '''true'''
 """
 
+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:
@@ -16,4 +34,5 @@ try:
   foo()
 except AssertionError:
   let e = getCurrentException()
-  echo e.getStackTrace
+  let trace = e.getStackTrace
+  echo tmatch(trace, expected)