summaryrefslogtreecommitdiffstatshomepage
path: root/src/regtests/chdman/chdtest.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/regtests/chdman/chdtest.py')
-rw-r--r--src/regtests/chdman/chdtest.py91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/regtests/chdman/chdtest.py b/src/regtests/chdman/chdtest.py
index e69de29bb2d..cd68f842e9c 100644
--- a/src/regtests/chdman/chdtest.py
+++ b/src/regtests/chdman/chdtest.py
@@ -0,0 +1,91 @@
+import os
+import subprocess
+import sys
+
+def runProcess(cmd):
+ process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ (stdout, stderr) = process.communicate()
+ return process.returncode, stdout, stderr
+
+def compareInfo(info1, info2):
+ lines1 = info1.splitlines();
+ lines2 = info2.splitlines();
+ if not len(lines1) == len(lines2):
+ return False
+
+ mismatch = False
+ for i in range(len(lines1)):
+ if lines1[i].startswith("chdman - ") and lines2[i].startswith("chdman - "):
+ continue
+ if lines1[i].startswith("Input file:") and lines2[i].startswith("Input file:"):
+ continue
+ if not lines1[i] == lines2[i]:
+ mismatch = True
+ print lines1[i] + " - " + lines2[i]
+
+ return mismatch == False
+
+currentDirectory = os.path.dirname(os.path.realpath(__file__))
+inputPath = os.path.join(currentDirectory, 'input')
+outputPath = os.path.join(currentDirectory, "output")
+tempPath = os.path.join(currentDirectory, "temp")
+if os.name == 'nt':
+ chdmanBin = os.path.normpath(os.path.join(currentDirectory, "..", "..", "..", "chdman.exe"))
+else:
+ chdmanBin = os.path.normpath(os.path.join(currentDirectory, "..", "..", "..", "chdman"))
+
+if not os.path.exists(chdmanBin):
+ print chdmanBin + " does not exist"
+ sys.exit(1)
+
+if not os.path.exists(inputPath):
+ print inputPath + " does not exist"
+ sys.exit(1)
+
+if not os.path.exists(inputPath):
+ print inputPath + " does not exist"
+ sys.exit(1)
+
+failure = False
+
+for root, dirs, files in os.walk(inputPath):
+ for d in dirs:
+ inFile = os.path.join(root, d, "in")
+ # TODO: make this better
+ outFile = os.path.join(root, d, "out.chd").replace("input", "output")
+ tempFilePath = os.path.join(tempPath, d)
+ tempFile = os.path.join(tempFilePath, "out.chd")
+ cmd = ""
+ if not os.path.exists(tempFilePath):
+ os.makedirs(tempFilePath)
+ if d.startswith("createcd"):
+ ext = d.split("_", 2)[1]
+ inFile += "." + ext
+ cmd = chdmanBin + " createcd -f -i " + inFile + " -o " + tempFile
+ else:
+ print "unsupported mode"
+ continue
+ exitcode, stdout, stderr = runProcess(cmd)
+ if not exitcode == 0:
+ print d + " - command failed with " + str(exitcode) + " (" + stderr + ")"
+ failure = True
+ exitcode, stdout, stderr = runProcess(chdmanBin + " verify -i " + tempFile)
+ if not exitcode == 0:
+ print d + " - verify failed with " + str(exitcode) + " (" + stderr + ")"
+ failure = True
+ # TODO: store exected output of reference file as well and compare
+ exitcode, info1, stderr = runProcess(chdmanBin + " info -v -i " + tempFile)
+ if not exitcode == 0:
+ print d + " - info (temp) failed with " + str(exitcode) + " (" + stderr + ")"
+ failure = True
+ exitcode, info2, stderr = runProcess(chdmanBin + " info -v -i " + outFile)
+ if not exitcode == 0:
+ print d + " - info (output) failed with " + str(exitcode) + " (" + stderr + ")"
+ failure = True
+ if not compareInfo(info1, info2):
+ print d + " - info output differs"
+ failure = True
+ # TODO: extract and compare
+
+if not failure:
+ print "All tests finished successfully" \ No newline at end of file