From 31c3af4866a9b7eb4427a621ac40fb9f93891772 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Tue, 2 Jul 2024 15:26:59 +1000 Subject: [PATCH] RegTest: Add spacebar swapper --- scripts/check_regression_tests.py | 265 ++++++++++++++++++++++++++++-- 1 file changed, 251 insertions(+), 14 deletions(-) diff --git a/scripts/check_regression_tests.py b/scripts/check_regression_tests.py index f26e1fd93..1d80e80c2 100644 --- a/scripts/check_regression_tests.py +++ b/scripts/check_regression_tests.py @@ -12,15 +12,240 @@ FILE_HEADER = """ Comparison + """ FILE_FOOTER = """ + + """ +MAX_DIFF_FRAMES = 9999 + outfile = None def write(line): outfile.write(line + "\n") @@ -48,9 +273,10 @@ def check_regression_test(baselinedir, testdir, name): #print("*** %s is missing in test set" % name) return False - num_diff = 0 - header_written = False images = glob.glob(os.path.join(dir1, "frame_*.png")) + diff_frames = [] + first_fail = True + for imagepath in images: imagename = Path(imagepath).name matches = re.match("frame_([0-9]+).png", imagename) @@ -63,27 +289,36 @@ def check_regression_test(baselinedir, testdir, name): path2 = os.path.join(dir2, imagename) if not os.path.isfile(path2): print("--- Frame %u for %s is missing in test set" % (framenum, name)) - if not header_written: + if first_fail: write("

{}

".format(name)) - header_written = True + first_fail = False write("

--- Frame %u for %s is missing in test set

" % (framenum, name)) continue if not compare_frames(path1, path2): - print("*** Difference in frame %u for %s" % (framenum, name)) + diff_frames.append(framenum) + + if first_fail: + write("
") + write("

{}

".format(name)) + write("") + first_fail = False imguri1 = Path(path1).as_uri() imguri2 = Path(path2).as_uri() - if not header_written: - write("

{}

".format(name)) - header_written = True - write("
") - write("".format(framenum)) - write("".format(imguri1, imguri2)) - write("
Frame {}
") - num_diff += 1 + write("Frame %d" % (framenum)) + write("" % (imguri1, imguri2)) - return (num_diff > 0) + if len(diff_frames) == MAX_DIFF_FRAMES: + break + + if len(diff_frames) > 0: + write("") + write("
Difference in frames [%s] for %s
" % (",".join(map(str, diff_frames)), name)) + write("
") + print("*** Difference in frames [%s] for %s" % (",".join(map(str, diff_frames)), name)) + + return len(diff_frames) == 0 def check_regression_tests(baselinedir, testdir): @@ -106,9 +341,11 @@ if __name__ == "__main__": parser = argparse.ArgumentParser(description="Check frame dump images for regression tests") parser.add_argument("-baselinedir", action="store", required=True, help="Directory containing baseline frames to check against") parser.add_argument("-testdir", action="store", required=True, help="Directory containing frames to check") + parser.add_argument("-maxframes", type=int, action="store", required=False, default=9999, help="Max frames to compare") parser.add_argument("outfile", action="store", help="The file to write the output to") args = parser.parse_args() + MAX_DIFF_FRAMES = args.maxframes outfile = open(args.outfile, "w") write(FILE_HEADER)