diff options
Diffstat (limited to 'src/regtests/chdman/chdtest.py')
-rw-r--r-- | src/regtests/chdman/chdtest.py | 237 |
1 files changed, 0 insertions, 237 deletions
diff --git a/src/regtests/chdman/chdtest.py b/src/regtests/chdman/chdtest.py deleted file mode 100644 index 98f0a3886f9..00000000000 --- a/src/regtests/chdman/chdtest.py +++ /dev/null @@ -1,237 +0,0 @@ -import os -import subprocess -import sys -import hashlib -import shutil - -def runProcess(cmd): - #print " ".join(cmd) - process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - (stdout, stderr) = process.communicate() - if not isinstance(stdout, str): # python 3 - stdout = stdout.decode('latin-1') - if not isinstance(stderr, str): # python 3 - stderr = stderr.decode('latin-1') - #if stderr: - # print stderr - 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 - -def sha1sum(path): - if not os.path.exists(path): - return "" - f = open(path, 'rb') - try: - sha1 = hashlib.sha1() - while True: - data = f.read(8192) - if data: - sha1.update(data) - else: - break - finally: - f.close() - return sha1.hexdigest() - -def extractcdAndCompare(type): - global failure - extractFileDir = os.path.join(tempFilePath, type + "_output") - if not os.path.exists(extractFileDir): - os.makedirs(extractFileDir) - extractFileBase = os.path.join(extractFileDir, "extract") - extractFile = extractFileBase + "." + type - extractFileBin = extractFileBase + ".bin" - - exitcode, stdout, stderr = runProcess([chdmanBin, "extractcd", "-f", "-i", outFile, "-o", extractFile]) - if not exitcode == 0: - print(d + " - extractcd (" + type + ") failed with " + str(exitcode) + " (" + stderr + ")") - failure = True - - sha1_extract = sha1sum(extractFile) - sha1_extract_bin = sha1sum(extractFileBin) - - extractFileDir = os.path.join(tempFilePath, type + "_temp") - if not os.path.exists(extractFileDir): - os.makedirs(extractFileDir) - extractFileBase = os.path.join(extractFileDir, "extract") - extractFile = extractFileBase + "." + type - extractFileBin = extractFileBase + ".bin" - - exitcode, stdout, stderr = runProcess([chdmanBin, "extractcd", "-f", "-i", tempFile, "-o", extractFile]) - if not exitcode == 0: - print(d + " - extractcd (" + type + ") failed with " + str(exitcode) + " (" + stderr + ")") - failure = True - - sha1_extract_2 = sha1sum(extractFile) - sha1_extract_bin_2 = sha1sum(extractFileBin) - - if not sha1_extract == sha1_extract_2: - print("expected: " + sha1_extract + " found: " + sha1_extract_2) - print(d + " - SHA1 mismatch (extractcd - " + type + " - toc)") - failure = True - - if not sha1_extract_bin == sha1_extract_bin_2: - print("expected: " + sha1_extract_bin + " found: " + sha1_extract_bin_2) - print(d + " - SHA1 mismatch (extractcd - " + type + " - bin)") - failure = True - -def extractAndCompare(command, ext): - global failure - extractFileDir = os.path.join(tempFilePath, ext + "_output") - if not os.path.exists(extractFileDir): - os.makedirs(extractFileDir) - extractFileBase = os.path.join(extractFileDir, "extract") - extractFile = extractFileBase + "." + ext - - exitcode, stdout, stderr = runProcess([chdmanBin, command, "-f", "-i", outFile, "-o", extractFile]) - if not exitcode == 0: - print(d + " - " + command + " (" + ext + ") failed with " + str(exitcode) + " (" + stderr + ")") - failure = True - - sha1_extract = sha1sum(extractFile) - - extractFileDir = os.path.join(tempFilePath, ext + "_temp") - if not os.path.exists(extractFileDir): - os.makedirs(extractFileDir) - extractFileBase = os.path.join(extractFileDir, "extract") - extractFile = extractFileBase + "." + ext - - exitcode, stdout, stderr = runProcess([chdmanBin, command, "-f", "-i", tempFile, "-o", extractFile]) - if not exitcode == 0: - print(d + " - " + command + " (" + ext + ") failed with " + str(exitcode) + " (" + stderr + ")") - failure = True - - sha1_extract_2 = sha1sum(extractFile) - - if not sha1_extract == sha1_extract_2: - print("expected: " + sha1_extract + " found: " + sha1_extract_2) - print(d + " - SHA1 mismatch (" + command + " - " + ext + ")") - failure = True - -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): - sys.stderr.write(chdmanBin + " does not exist\n") - sys.exit(1) - -if not os.path.exists(inputPath): - sys.stderr.write(inputPath + " does not exist\n") - sys.exit(1) - -if not os.path.exists(outputPath): - sys.stderr.write(outputPath + " does not exist\n") - sys.exit(1) - -if os.path.exists(tempPath): - shutil.rmtree(tempPath) - -failure = False - -for root, dirs, files in os.walk(inputPath): - for d in dirs: - if d.startswith("."): - continue - - command = ext = d.split("_", 2)[0] - 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") - inParams = inFile + ".params" - params = [] - if os.path.exists(inParams): - f = open(inParams, 'r') - paramsstr = f.read() - f.close() - params = paramsstr.split(" ") - if not os.path.exists(tempFilePath): - os.makedirs(tempFilePath) - if command == "createcd": - ext = d.split("_", 2)[1] - inFile += "." + ext - elif command == "createhd": - ext = d.split("_", 2)[1] - inFile += "." + ext - elif command == "createld": - ext = d.split("_", 2)[1] - inFile += "." + ext - elif command == "copy": - inFile += ".chd" - else: - print("unsupported mode '%s'" % command) - continue - if os.path.exists(inFile): - cmd = [chdmanBin, command, "-f", "-i", inFile, "-o", tempFile] + params - else: - cmd = [chdmanBin, command, "-f", "-o", tempFile] + params - - exitcode, stdout, stderr = runProcess(cmd) - if not exitcode == 0: - print(d + " - command failed with " + str(exitcode) + " (" + stderr + ")") - failure = True - - # verify - exitcode, stdout, stderr = runProcess([chdmanBin, "verify", "-i", tempFile]) - if not exitcode == 0: - print(d + " - verify failed with " + str(exitcode) + " (" + stderr + ")") - failure = True - - # compare info - # TODO: store expected 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 - - # extract and compare - if command == "createcd": - extractcdAndCompare("toc") - extractcdAndCompare("cue") - elif command == "createhd": - extractAndCompare("extracthd", "raw") - elif command == "createld": - extractAndCompare("extractld", "avi") - # TODO: add extraction for "copy" as well - - # compare SHA1 of output files - sha1_out = sha1sum(outFile) - sha1_temp = sha1sum(tempFile) - if not sha1_out == sha1_temp: - print("expected: " + sha1_out + " found: " + sha1_temp) - print(d + " - SHA1 mismatch (output file)") - failure = True - -if not failure: - print("All tests finished successfully") |