diff options
author | Timothee Cour <timothee.cour2@gmail.com> | 2020-05-25 04:25:40 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-25 13:25:40 +0200 |
commit | 58282547f6d3fe4ce3fa2efe4f6afe07bc5de662 (patch) | |
tree | 2ef8bc28fa8d78ea8bc18505c00d178a10537da4 /tests/misc/trunner.nim | |
parent | cbfe9325c5c1851630ce10cf780d1af27c57d19a (diff) | |
download | Nim-58282547f6d3fe4ce3fa2efe4f6afe07bc5de662.tar.gz |
fix #6583, fix #14376, index+search now generated for all projects, many bug fixes with nim doc (#14324)
* refs #6583 fix nim doc output * changelog * change default for outDir when unspecified * cleanups * --project implies --index
Diffstat (limited to 'tests/misc/trunner.nim')
-rw-r--r-- | tests/misc/trunner.nim | 101 |
1 files changed, 89 insertions, 12 deletions
diff --git a/tests/misc/trunner.nim b/tests/misc/trunner.nim index bfe331c9c..996abeb18 100644 --- a/tests/misc/trunner.nim +++ b/tests/misc/trunner.nim @@ -8,19 +8,20 @@ discard """ ## Note: this test is a bit slow but tests a lot of things; please don't disable. import std/[strformat,os,osproc,unittest] +from std/sequtils import toSeq,mapIt +from std/algorithm import sorted +import stdtest/[specialpaths, unittest_light] -const nim = getCurrentCompilerExe() +import "$nim/compiler/nimpaths" -const mode = - when defined(c): "c" - elif defined(cpp): "cpp" - else: static: doAssert false - -const testsDir = currentSourcePath.parentDir.parentDir -const buildDir = testsDir.parentDir / "build" -const nimcache = buildDir / "nimcacheTrunner" - # `querySetting(nimcacheDir)` would also be possible, but we thus - # avoid stomping on other parallel tests +const + nim = getCurrentCompilerExe() + mode = + when defined(c): "c" + elif defined(cpp): "cpp" + else: static: doAssert false + nimcache = buildDir / "nimcacheTrunner" + # instead of `querySetting(nimcacheDir)`, avoids stomping on other parallel tests proc runCmd(file, options = ""): auto = let fileabs = testsDir / file.unixToNativePath @@ -63,6 +64,82 @@ else: # don't run twice the same test import std/[strutils] template check2(msg) = doAssert msg in output, output + block: # tests with various options `nim doc --project --index --docroot` + # regression tests for issues and PRS: #14376 #13223 #6583 ##13647 + let file = testsDir / "nimdoc/sub/mmain.nim" + let mainFname = "mmain.html" + let htmldocsDirCustom = nimcache / "htmldocsCustom" + let docroot = testsDir / "nimdoc" + let options = [ + 0: "--project", + 1: "--project --docroot", + 2: "", + 3: fmt"--outDir:{htmldocsDirCustom}", + 4: fmt"--docroot:{docroot}", + 5: "--project --useNimcache", + 6: "--index:off", + ] + + for i in 0..<options.len: + let htmldocsDir = case i + of 3: htmldocsDirCustom + of 5: nimcache / htmldocsDirname + else: file.parentDir / htmldocsDirname + + var cmd = fmt"{nim} doc --index:on --listFullPaths --hint:successX:on --nimcache:{nimcache} {options[i]} {file}" + removeDir(htmldocsDir) + let (outp, exitCode) = execCmdEx(cmd) + check exitCode == 0 + proc nativeToUnixPathWorkaround(a: string): string = + # xxx pending https://github.com/nim-lang/Nim/pull/13265 `nativeToUnixPath` + a.replace(DirSep, '/') + + let ret = toSeq(walkDirRec(htmldocsDir, relative=true)).mapIt(it.nativeToUnixPathWorkaround).sorted.join("\n") + let context = $(i, ret, cmd) + var expected = "" + case i + of 0,5: + let htmlFile = htmldocsDir/"mmain.html" + check htmlFile in outp # sanity check for `hintSuccessX` + assertEquals ret, """ +@@/imp.html +@@/imp.idx +dochack.js +imp.html +imp.idx +imp2.html +imp2.idx +mmain.html +mmain.idx +nimdoc.out.css +theindex.html""", context + of 1: assertEquals ret, """ +dochack.js +nimdoc.out.css +tests/nimdoc/imp.html +tests/nimdoc/imp.idx +tests/nimdoc/sub/imp.html +tests/nimdoc/sub/imp.idx +tests/nimdoc/sub/imp2.html +tests/nimdoc/sub/imp2.idx +tests/nimdoc/sub/mmain.html +tests/nimdoc/sub/mmain.idx +theindex.html""" + of 2, 3: assertEquals ret, """ +dochack.js +mmain.html +mmain.idx +nimdoc.out.css""", context + of 4: assertEquals ret, """ +dochack.js +nimdoc.out.css +sub/mmain.html +sub/mmain.idx""", context + of 6: assertEquals ret, """ +mmain.html +nimdoc.out.css""", context + else: doAssert false + block: # mstatic_assert let (output, exitCode) = runCmd("ccgbugs/mstatic_assert.nim", "-d:caseBad") check2 "sizeof(bool) == 2" @@ -121,7 +198,7 @@ else: # don't run twice the same test let cmd = fmt"""{nim} doc -b:{backend} --nimcache:{nimcache} -d:m13129Foo1 "--doccmd:-d:m13129Foo2 --hints:off" --usenimcache --hints:off {file}""" check execCmdEx(cmd) == (&"ok1:{backend}\nok2: backend: {backend}\n", 0) # checks that --usenimcache works with `nim doc` - check fileExists(nimcache / "m13129.html") + check fileExists(nimcache / "htmldocs/m13129.html") block: # mak sure --backend works with `nim r` let cmd = fmt"{nim} r --backend:{mode} --hints:off --nimcache:{nimcache} {file}" |