summary refs log tree commit diff stats
path: root/nimdoc/rsttester.nim
diff options
context:
space:
mode:
authorMiran <narimiran@disroot.org>2020-11-12 22:25:23 +0100
committerGitHub <noreply@github.com>2020-11-12 22:25:23 +0100
commitd0c4c738b955f2641baa55ece6b5b90d4e632d8c (patch)
tree68d5210cfc94e29b84d6755a691da8a60220f737 /nimdoc/rsttester.nim
parent1413818aa14fd694d362326f428b470fa22e1a0a (diff)
downloadNim-d0c4c738b955f2641baa55ece6b5b90d4e632d8c.tar.gz
add a tester for rst2html (#15936)
Diffstat (limited to 'nimdoc/rsttester.nim')
-rw-r--r--nimdoc/rsttester.nim34
1 files changed, 34 insertions, 0 deletions
diff --git a/nimdoc/rsttester.nim b/nimdoc/rsttester.nim
new file mode 100644
index 000000000..6d41ffb86
--- /dev/null
+++ b/nimdoc/rsttester.nim
@@ -0,0 +1,34 @@
+import os, strutils
+
+const
+  baseDir = "nimdoc/rst2html"
+
+var failures = 0
+
+proc exec(cmd: string) =
+  if execShellCmd(cmd) != 0:
+    quit("FAILURE: " & cmd)
+
+proc testRst2Html(fixup = false) =
+  putEnv("SOURCE_DATE_EPOCH", "100000")
+  const nimExe = getCurrentCompilerExe() # so that `bin/nim_temp r nimdoc/tester.nim` works
+
+  for expectedHtml in walkDir(baseDir / "expected"):
+    let expectedHtml = expectedHtml.path
+    let sourceFile = expectedHtml.replace('\\', '/').replace("/expected/", "/source/").replace(".html", ".rst")
+    exec("$1 rst2html $2" % [nimExe, sourceFile])
+    let producedHtml = expectedHtml.replace('\\', '/').replace("/expected/", "/source/htmldocs/")
+    if readFile(expectedHtml) != readFile(producedHtml):
+      discard execShellCmd("diff -uNdr " & expectedHtml & " " & producedHtml)
+      inc failures
+      if fixup:
+        copyFile(producedHtml, expectedHtml)
+    else:
+      echo "SUCCESS: files identical: ", producedHtml
+    if failures == 0:
+      removeDir(baseDir / "source/htmldocs")
+
+testRst2Html(defined(fixup))
+
+# Check for failures
+if failures > 0: quit($failures & " failures occurred.")