diff options
author | Timothee Cour <timothee.cour2@gmail.com> | 2021-02-26 07:05:20 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-26 16:05:20 +0100 |
commit | ff3ace2232ee32381ceaa50edb29f64dbd2289ea (patch) | |
tree | 08865849a356a13199d8c05dfd7d997bce138eef | |
parent | c7d6e4c6a6078075433828ccec6a7f4351d6a096 (diff) | |
download | Nim-ff3ace2232ee32381ceaa50edb29f64dbd2289ea.tar.gz |
fix code-block test bugs: fix #17183, fix https://github.com/timotheecour/Nim/issues/620 (#17184)
* fix code-block test bugs: fix #17183, fix https://github.com/timotheecour/Nim/issues/620 * cleanup
-rw-r--r-- | compiler/docgen.nim | 8 | ||||
-rw-r--r-- | lib/packages/docutils/rstgen.nim | 5 | ||||
-rw-r--r-- | tests/nimdoc/trunnableexamples.nim | 10 |
3 files changed, 21 insertions, 2 deletions
diff --git a/compiler/docgen.nim b/compiler/docgen.nim index 09a3983d4..1e7f1e3a6 100644 --- a/compiler/docgen.nim +++ b/compiler/docgen.nim @@ -210,7 +210,8 @@ proc newDocumentor*(filename: AbsoluteFile; cache: IdentCache; conf: ConfigRef, var outp: AbsoluteFile if filename.len == 0: let nameOnly = splitFile(d.filename).name - outp = getNimcacheDir(conf) / RelativeDir(nameOnly) / + # "snippets" needed, refs bug #17183 + outp = getNimcacheDir(conf) / "snippets".RelativeDir / RelativeDir(nameOnly) / RelativeFile(nameOnly & "_snippet_" & $d.id & ".nim") elif isAbsolute(filename): outp = AbsoluteFile(filename) @@ -228,10 +229,14 @@ proc newDocumentor*(filename: AbsoluteFile; cache: IdentCache; conf: ConfigRef, # backward compatibility hacks; interpolation commands should explicitly use `$` if cmd.startsWith "nim ": result = "$nim " & cmd[4..^1] else: result = cmd + # factor with D20210224T221756 result = result.replace("$1", "$options") % [ "nim", os.getAppFilename().quoteShell, + "libpath", quoteShell(d.conf.libpath), + "docCmd", d.conf.docCmd, "backend", $d.conf.backend, "options", outp.quoteShell, + # xxx `quoteShell` seems buggy if user passes options = "-d:foo somefile.nim" ] let cmd = cmd.interpSnippetCmd rawMessage(conf, hintExecuting, cmd) @@ -475,6 +480,7 @@ proc runAllExamples(d: PDoc) = writeFile(outp, group.code) # most useful semantics is that `docCmd` comes after `rdoccmd`, so that we can (temporarily) override # via command line + # D20210224T221756:here let cmd = "$nim $backend -r --lib:$libpath --warning:UnusedImport:off --path:$path --nimcache:$nimcache $rdoccmd $docCmd $file" % [ "nim", quoteShell(os.getAppFilename()), "backend", $d.conf.backend, diff --git a/lib/packages/docutils/rstgen.nim b/lib/packages/docutils/rstgen.nim index 93c8d29b1..f16fd5717 100644 --- a/lib/packages/docutils/rstgen.nim +++ b/lib/packages/docutils/rstgen.nim @@ -920,8 +920,11 @@ proc parseCodeBlockField(d: PDoc, n: PRstNode, params: var CodeBlockParams) = of "test": params.testCmd = n.getFieldValue.strip if params.testCmd.len == 0: - params.testCmd = "$nim r --backend:$backend $options" # see `interpSnippetCmd` + # factor with D20210224T221756. Note that `$docCmd` should appear before `$file` + # but after all other options, but currently `$options` merges both options and `$file` so it's tricky. + params.testCmd = "$nim r --backend:$backend --lib:$libpath $docCmd $options" else: + # consider whether `$docCmd` should be appended here too params.testCmd = unescape(params.testCmd) of "status", "exitcode": var status: int diff --git a/tests/nimdoc/trunnableexamples.nim b/tests/nimdoc/trunnableexamples.nim index 6232011cb..9e56e9143 100644 --- a/tests/nimdoc/trunnableexamples.nim +++ b/tests/nimdoc/trunnableexamples.nim @@ -120,3 +120,13 @@ runnableExamples: # note: there are yet other examples where putting runnableExamples at module # scope is needed, for example when using an `include` before an `import`, etc. + +##[ +snippet: + +.. code-block:: Nim + :test: + + doAssert defined(testFooExternal) + +]## |