summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
authorTimothee Cour <timothee.cour2@gmail.com>2021-06-02 09:02:14 -0700
committerGitHub <noreply@github.com>2021-06-02 09:02:14 -0700
commit0de3d4292f328f94c7a94af7e3e61e58ff43a252 (patch)
tree829525610f60acb1fb4461385532d197cc077301 /tests
parent4ee6eddad4a43e1ba6104e091f221f6295aece64 (diff)
downloadNim-0de3d4292f328f94c7a94af7e3e61e58ff43a252.tar.gz
fix #16993, #18054, #17835 runnableExamples now works with templates and nested templates (#18082)
Diffstat (limited to 'tests')
-rw-r--r--tests/js/tstdlib_various.nim2
-rw-r--r--tests/nimdoc/trunnableexamples.nim57
-rw-r--r--tests/nimdoc/trunnableexamples2.nim11
3 files changed, 67 insertions, 3 deletions
diff --git a/tests/js/tstdlib_various.nim b/tests/js/tstdlib_various.nim
index a1bb63d46..4b5ce1de8 100644
--- a/tests/js/tstdlib_various.nim
+++ b/tests/js/tstdlib_various.nim
@@ -153,7 +153,7 @@ block tsplit2:
   var errored = false
   try:
     discard "hello".split("")
-  except AssertionError:
+  except AssertionDefect:
     errored = true
   doAssert errored
 
diff --git a/tests/nimdoc/trunnableexamples.nim b/tests/nimdoc/trunnableexamples.nim
index bc5ea0e5e..ac7a0e26f 100644
--- a/tests/nimdoc/trunnableexamples.nim
+++ b/tests/nimdoc/trunnableexamples.nim
@@ -1,6 +1,7 @@
 discard """
-cmd: "nim doc --doccmd:-d:testFooExternal --hints:off $file"
+cmd: "nim doc --doccmd:--hints:off --hints:off $file"
 action: "compile"
+nimoutFull: true
 nimout: '''
 foo1
 foo2
@@ -8,12 +9,23 @@ foo3
 foo5
 foo6
 foo7
+in examplesInTemplate1
+doc in outer
+doc in inner1
+doc in inner2
 foo8
 foo9
 '''
 joinable: false
 """
 
+#[
+pending bug #18077, use instead:
+cmd: "nim doc --doccmd:'-d:testFooExternal --hints:off' --hints:off $file"
+and merge trunnableexamples2 back here
+]#
+{.define(testFooExternal).}
+
 proc fun*() =
   runnableExamples:
     block: # `defer` only allowed inside a block
@@ -109,6 +121,47 @@ when true: # runnableExamples with rdoccmd
     # passing seq (to run with multiple compilation options)
     runnableExamples(@["-b:cpp", "-b:js"]): discard
 
+when true: # bug #16993
+  template examplesInTemplate1*(cond: untyped) =
+    ## in examplesInTemplate1
+    runnableExamples:
+      echo "in examplesInTemplate1"
+    discard
+  examplesInTemplate1 true
+  examplesInTemplate1 true
+  examplesInTemplate1 true
+
+when true: # bug #18054
+  template outer*(body: untyped) =
+    ## outer template doc string.
+    runnableExamples:
+      echo "doc in outer"
+    ##
+    template inner1*() =
+      ## inner1 template doc string.
+      runnableExamples:
+        echo "doc in inner1"
+      ##
+
+    template inner2*() =
+      ## inner2 template doc string.
+      runnableExamples:
+        echo "doc in inner2"
+    body
+  outer:
+    inner1()
+    inner2()
+
+when true: # bug #17835
+  template anyItFake*(s, pred: untyped): bool =
+    ## Foo
+    runnableExamples: discard
+    true
+
+  proc anyItFakeMain*(n: seq[int]): bool =
+    result = anyItFake(n, it == 0)
+      # this was giving: Error: runnableExamples must appear before the first non-comment statement
+
 runnableExamples:
   block: # bug #17279
     when int.sizeof == 8:
@@ -118,7 +171,7 @@ runnableExamples:
   # bug #13491
   block:
     proc fun(): int = doAssert false
-    doAssertRaises(AssertionError, (discard fun()))
+    doAssertRaises(AssertionDefect, (discard fun()))
 
   block:
     template foo(body) = discard
diff --git a/tests/nimdoc/trunnableexamples2.nim b/tests/nimdoc/trunnableexamples2.nim
new file mode 100644
index 000000000..5a437744e
--- /dev/null
+++ b/tests/nimdoc/trunnableexamples2.nim
@@ -0,0 +1,11 @@
+discard """
+cmd: "nim doc --doccmd:-d:testFooExternal --hints:off $file"
+action: "compile"
+joinable: false
+"""
+
+# pending bug #18077, merge back inside trunnableexamples.nim
+when true: # runnableExamples with rdoccmd
+  runnableExamples "-d:testFoo -d:testBar":
+    doAssert defined(testFoo) and defined(testBar)
+    doAssert defined(testFooExternal)