Use the correct HTML file reference in "nim doc" generated idx files (#11326)
* Use the correct HTML file reference in "nim doc" generated idx files Now "nim doc --out:foo.html --index:on bar.nim" generates "foo.html" and the generated "bar.idx" contains references to "foo.html". Fixes https://github.com/nim-lang/Nim/issues/11325. * Refactor the nim doc tester to extend it for more tests * Reference the HTML files relative to the outDir, not project dir * Add test for issues #11312 and #11325 - https://github.com/nim-lang/Nim/issues/11312 - https://github.com/nim-lang/Nim/issues/11325
This commit is contained in:
parent
6a94599d66
commit
2f610d621f
6 changed files with 1716 additions and 11 deletions
|
|
@ -1,20 +1,36 @@
|
|||
# Small program that runs the test cases for 'nim doc'.
|
||||
# To run this, cd to the git repo root, and run "nim c -r nimdoc/tester.nim".
|
||||
|
||||
import strutils, os
|
||||
|
||||
var
|
||||
failures = 0
|
||||
|
||||
proc test(dir: string; fixup = false) =
|
||||
const
|
||||
baseDir = "nimdoc"
|
||||
|
||||
type
|
||||
NimSwitches = object
|
||||
doc: seq[string]
|
||||
buildIndex: seq[string]
|
||||
|
||||
proc testNimDoc(prjDir, docsDir: string; switches: NimSwitches; fixup = false) =
|
||||
let
|
||||
nimDocSwitches = switches.doc.join(" ")
|
||||
nimBuildIndexSwitches = switches.buildIndex.join(" ")
|
||||
|
||||
putEnv("SOURCE_DATE_EPOCH", "100000")
|
||||
if execShellCmd("nim doc --project --index:on -o:$1/htmldocs $1/testproject.nim" % dir) != 0:
|
||||
quit("FAILURE: nim doc failed")
|
||||
|
||||
if execShellCmd("nim buildIndex -o:$1/htmldocs/theindex.html $1/htmldocs" % [dir]) != 0:
|
||||
quit("FAILURE: nim buildIndex failed")
|
||||
if nimDocSwitches != "":
|
||||
if execShellCmd("nim doc $1" % [nimDocSwitches]) != 0:
|
||||
quit("FAILURE: nim doc failed")
|
||||
|
||||
for expected in walkDirRec(dir / "expected/"):
|
||||
let produced = expected.replace('\\', '/').replace("/expected/", "/htmldocs/")
|
||||
if nimBuildIndexSwitches != "":
|
||||
if execShellCmd("nim buildIndex $1" % [nimBuildIndexSwitches]) != 0:
|
||||
quit("FAILURE: nim buildIndex failed")
|
||||
|
||||
for expected in walkDirRec(prjDir / "expected/"):
|
||||
let produced = expected.replace('\\', '/').replace("/expected/", "/$1/" % [docsDir])
|
||||
if not fileExists(produced):
|
||||
echo "FAILURE: files not found: ", produced
|
||||
inc failures
|
||||
|
|
@ -26,8 +42,35 @@ proc test(dir: string; fixup = false) =
|
|||
copyFile(produced, expected)
|
||||
else:
|
||||
echo "SUCCESS: files identical: ", produced
|
||||
if failures == 0:
|
||||
removeDir(dir / "htmldocs")
|
||||
|
||||
test("nimdoc/testproject", defined(fixup))
|
||||
if failures == 0 and ((prjDir / docsDir) != prjDir):
|
||||
removeDir(prjDir / docsDir)
|
||||
|
||||
# Test "nim doc --project --out:.. --index:on .."
|
||||
let
|
||||
test1PrjName = "testproject"
|
||||
test1Dir = baseDir / test1PrjName
|
||||
test1DocsDir = "htmldocs"
|
||||
test1Switches = NimSwitches(doc: @["--project",
|
||||
"--out:$1/$2" % [test1Dir, test1DocsDir],
|
||||
"--index:on",
|
||||
"$1/$2.nim" % [test1Dir, test1PrjName]],
|
||||
buildIndex: @["--out:$1/$2/theindex.html" % [test1Dir, test1DocsDir],
|
||||
"$1/$2" % [test1Dir, test1DocsDir]])
|
||||
testNimDoc(test1Dir, test1DocsDir, test1Switches, defined(fixup))
|
||||
|
||||
# Test "nim doc --out:.. --index:on .."
|
||||
let
|
||||
test2PrjDir = "test_out_index_dot_html"
|
||||
test2PrjName = "foo"
|
||||
test2Dir = baseDir / test2PrjDir
|
||||
test2DocsDir = "htmldocs"
|
||||
test2Switches = NimSwitches(doc: @["--out:$1/$2/index.html" % [test2Dir, test2DocsDir],
|
||||
"--index:on",
|
||||
"$1/$2.nim" % [test2Dir, test2PrjName]],
|
||||
buildIndex: @["--out:$1/$2/theindex.html" % [test2Dir, test2DocsDir],
|
||||
"$1/$2" % [test2Dir, test2DocsDir]])
|
||||
testNimDoc(test2Dir, test2DocsDir, test2Switches, defined(fixup))
|
||||
|
||||
# Check for failures
|
||||
if failures > 0: quit($failures & " failures occurred.")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue