summary refs log tree commit diff stats
path: root/nimdoc/rsttester.nim
diff options
context:
space:
mode:
Diffstat (limited to 'nimdoc/rsttester.nim')
-rw-r--r--nimdoc/rsttester.nim16
1 files changed, 12 insertions, 4 deletions
diff --git a/nimdoc/rsttester.nim b/nimdoc/rsttester.nim
index 6d41ffb86..be2b56c67 100644
--- a/nimdoc/rsttester.nim
+++ b/nimdoc/rsttester.nim
@@ -1,8 +1,14 @@
+# To run this, cd to the git repo root, and run "nim r nimdoc/rsttester.nim".
+# to change expected results (after carefully verifying everything), use -d:nimTestsNimdocFixup
+
 import os, strutils
+from std/private/gitutils import diffFiles
 
 const
   baseDir = "nimdoc/rst2html"
 
+const fixup = defined(nimTestsNimdocFixup)
+
 var failures = 0
 
 proc exec(cmd: string) =
@@ -18,17 +24,19 @@ proc testRst2Html(fixup = false) =
     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)
+    let versionCacheParam = "?v=" & $NimMajor & "." & $NimMinor & "." & $NimPatch
+    let producedFile = readFile(producedHtml).replace(versionCacheParam,"") #remove version cache param used for cache invalidation
+    if readFile(expectedHtml) != producedFile:
+      echo diffFiles(expectedHtml, producedHtml).output
       inc failures
       if fixup:
-        copyFile(producedHtml, expectedHtml)
+        writeFile(expectedHtml, producedFile)
     else:
       echo "SUCCESS: files identical: ", producedHtml
     if failures == 0:
       removeDir(baseDir / "source/htmldocs")
 
-testRst2Html(defined(fixup))
+testRst2Html(fixup)
 
 # Check for failures
 if failures > 0: quit($failures & " failures occurred.")