diff options
Diffstat (limited to 'nimpretty/tester.nim')
-rw-r--r-- | nimpretty/tester.nim | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/nimpretty/tester.nim b/nimpretty/tester.nim new file mode 100644 index 000000000..b1f15aee6 --- /dev/null +++ b/nimpretty/tester.nim @@ -0,0 +1,64 @@ +# Small program that runs the test cases + +import strutils, os, sequtils +from std/private/gitutils import diffFiles + +const + dir = "nimpretty/tests" + outputdir = dir / "outputdir" + +var + failures = 0 + +when defined(develop): + const nimp = "bin" / "nimpretty".addFileExt(ExeExt) + if execShellCmd("nim c -o:$# nimpretty/nimpretty.nim" % [nimp]) != 0: + quit("FAILURE: compilation of nimpretty failed") +else: + const nimp = "nimpretty" + +proc test(infile, ext: string) = + if execShellCmd("$# -o:$# --backup:off $#" % [nimp, infile.changeFileExt(ext), infile]) != 0: + echo "FAILURE: nimpretty cannot prettify ", infile + failures += 1 + return + let nimFile = splitFile(infile).name + let expected = dir / "expected" / nimFile & ".nim" + let produced = dir / nimFile.changeFileExt(ext) + if readFile(expected) != readFile(produced): + echo "FAILURE: files differ: ", nimFile + echo diffFiles(expected, produced).output + failures += 1 + else: + echo "SUCCESS: files identical: ", nimFile + +proc testTogether(infiles: seq[string]) = + if execShellCmd("$# --outDir:$# --backup:off $#" % [nimp, outputdir, infiles.join(" ")]) != 0: + echo "FAILURE: nimpretty cannot prettify files: ", $infiles + failures += 1 + return + + for infile in infiles: + let nimFile = splitFile(infile).name + let expected = dir / "expected" / nimFile & ".nim" + let produced = dir / "outputdir" / infile + if readFile(expected) != readFile(produced): + echo "FAILURE: files differ: ", nimFile + echo diffFiles(expected, produced).output + failures += 1 + else: + echo "SUCCESS: files identical: ", nimFile + +let allFiles = toSeq(walkFiles(dir / "*.nim")) +for t in allFiles: + test(t, "pretty") + # also test that pretty(pretty(x)) == pretty(x) + test(t.changeFileExt("pretty"), "pretty2") + + removeFile(t.changeFileExt("pretty")) + removeFile(t.changeFileExt("pretty2")) + +testTogether(allFiles) +removeDir(outputdir) + +if failures > 0: quit($failures & " failures occurred.") |