59 lines
1.5 KiB
Python
59 lines
1.5 KiB
Python
import os
|
|
import sys
|
|
import zlib
|
|
import subprocess
|
|
|
|
if len(sys.argv) < 2:
|
|
filepath = os.path.dirname(sys.argv[0])
|
|
if os.name == 'nt':
|
|
exe = os.path.join(filepath, "../build/test_deflate.exe")
|
|
else:
|
|
exe = os.path.join(filepath, "../build/test_deflate")
|
|
exe = os.path.relpath(exe)
|
|
else:
|
|
exe = sys.argv[1]
|
|
|
|
path = "."
|
|
if len(sys.argv) >= 3:
|
|
path = sys.argv[2]
|
|
|
|
def test(data):
|
|
for level in range(1, 10):
|
|
if level < 9:
|
|
print("{},".format(level), end="")
|
|
else:
|
|
print("{}".format(level), end="")
|
|
compressed = zlib.compress(data, level)
|
|
args = [exe, str(len(compressed)), str(len(data))]
|
|
result = subprocess.check_output(args, input=compressed)
|
|
if result != data:
|
|
raise ValueError("Decompression mismatch")
|
|
|
|
for r,dirs,files in os.walk(path):
|
|
# HACK: Ignore .git directories
|
|
if ".git" in r:
|
|
continue
|
|
|
|
for file in files:
|
|
sys.stdout.flush()
|
|
path = os.path.join(r, file)
|
|
try:
|
|
print(path, end=': ')
|
|
except:
|
|
# Print fails sometimes with weird filenames (?)
|
|
continue
|
|
try:
|
|
f = open(path, "rb")
|
|
except:
|
|
print("SKIP")
|
|
continue
|
|
b = f.read()
|
|
try:
|
|
test(b)
|
|
print()
|
|
except Exception as e:
|
|
print()
|
|
print("FAIL ({})".format(e))
|
|
sys.exit(1)
|
|
f.close()
|