Files
coven/modules/ufbx/misc/test_deflate.py

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()