- Move the comparison logic into its own script - Add entry point bash script to generate the renderings - Separate the preamble bash logic into its own file
55 lines
2.0 KiB
Python
55 lines
2.0 KiB
Python
import glob
|
|
import os
|
|
import sys
|
|
import pprint
|
|
import json
|
|
|
|
from utils import execute, ArgParseImpl, important_print
|
|
from image_diff import same_image
|
|
from results import RESULT_OK, RESULT_FAILED, RESULT_MISSING
|
|
|
|
def _compare_goldens(base_dir, comparison_dir):
|
|
render_results = {}
|
|
base_files = glob.glob(os.path.join(base_dir, "./**/*.tif"))
|
|
for golden_file in base_files:
|
|
base_fname = os.path.abspath(golden_file)
|
|
test_case = base_fname.replace(f'{os.path.abspath(base_dir)}/', '')
|
|
comp_fname = os.path.abspath(os.path.join(comparison_dir, test_case))
|
|
if not os.path.exists(comp_fname):
|
|
print(f'file name not found: {comp_fname}')
|
|
render_results[test_case] = RESULT_MISSING
|
|
continue
|
|
if not same_image(base_fname, comp_fname):
|
|
render_results[test_case] = RESULT_FAILED
|
|
else:
|
|
render_results[test_case] = RESULT_OK
|
|
return render_results
|
|
|
|
if __name__ == '__main__':
|
|
parser = ArgParseImpl()
|
|
parser.add_argument('--src', help='Directory of the base of the diff.', required=True)
|
|
parser.add_argument('--dest', help='Directory of the comparison of the diff.')
|
|
parser.add_argument('--out', help='Directory of output for the result of the diff.')
|
|
|
|
args, _ = parser.parse_known_args(sys.argv[1:])
|
|
|
|
dest = args.dest
|
|
if not dest:
|
|
print('Assume the default renderdiff output folder')
|
|
dest = os.path.join(os.getcwd(), './out/renderdiff_tests')
|
|
assert os.path.exists(dest), f"Destination folder={dest} does not exist."
|
|
|
|
results = _compare_goldens(args.src, dest)
|
|
|
|
if args.out:
|
|
assert os.path.exists(arg.out), f"Output folder={dest} does not exist."
|
|
with open(os.path.join(args.out, "compare_results.json", 'w')) as f:
|
|
f.write(json.dumps(results))
|
|
|
|
failed = [f" {k}" for k in results.keys() if results[k] != RESULT_OK]
|
|
success_count = len(results) - len(failed)
|
|
important_print(f'Successfully compared {success_count} / {len(results)} images' +
|
|
('\nFailed:\n' + ('\n'.join(failed)) if len(failed) > 0 else ''))
|
|
if len(failed) > 0:
|
|
exit(1)
|