diff --git a/tests/python/cycles_render_tests.py b/tests/python/cycles_render_tests.py index eb7a1d96d24..63f7dc0a454 100755 --- a/tests/python/cycles_render_tests.py +++ b/tests/python/cycles_render_tests.py @@ -127,6 +127,7 @@ def main(): from modules import render_report report = render_report.Report("Cycles Test Report", output_dir, idiff) report.set_pixelated(True) + report.set_compare_engines('cycles', 'eevee') ok = report.run(test_dir, render_file) sys.exit(not ok) diff --git a/tests/python/eevee_render_tests.py b/tests/python/eevee_render_tests.py index 176bb470e9a..9756f7a1840 100755 --- a/tests/python/eevee_render_tests.py +++ b/tests/python/eevee_render_tests.py @@ -123,6 +123,7 @@ def main(): report = render_report.Report("Eevee Test Report", output_dir, idiff) report.set_pixelated(True) report.set_reference_dir("eevee_renders") + report.set_compare_engines('eevee', 'cycles') ok = report.run(test_dir, render_file) sys.exit(not ok) diff --git a/tests/python/modules/render_report.py b/tests/python/modules/render_report.py index ec54ba4e823..2e7a092b3d8 100755 --- a/tests/python/modules/render_report.py +++ b/tests/python/modules/render_report.py @@ -96,7 +96,9 @@ class Report: 'verbose', 'update', 'failed_tests', - 'passed_tests' + 'passed_tests', + 'compare_tests', + 'compare_engines' ) def __init__(self, title, output_dir, idiff): @@ -104,6 +106,7 @@ class Report: self.output_dir = output_dir self.reference_dir = 'reference_renders' self.idiff = idiff + self.compare_engines = None self.pixelated = False self.verbose = os.environ.get("BLENDER_VERBOSE") is not None @@ -115,6 +118,7 @@ class Report: self.failed_tests = "" self.passed_tests = "" + self.compare_tests = "" if not os.path.exists(output_dir): os.makedirs(output_dir) @@ -125,14 +129,20 @@ class Report: def set_reference_dir(self, reference_dir): self.reference_dir = reference_dir + def set_compare_engines(self, engine, other_engine): + self.compare_engines = (engine, other_engine) + def run(self, dirpath, render_cb): # Run tests and output report. dirname = os.path.basename(dirpath) ok = self._run_all_tests(dirname, dirpath, render_cb) - self._write_html(dirname) + self._write_data(dirname) + self._write_html() + if self.compare_engines: + self._write_html(comparison=True) return ok - def _write_html(self, dirname): + def _write_data(self, dirname): # Write intermediate data for single test. outdir = os.path.join(self.output_dir, dirname) if not os.path.exists(outdir): @@ -144,9 +154,18 @@ class Report: filepath = os.path.join(outdir, "passed.data") pathlib.Path(filepath).write_text(self.passed_tests) + if self.compare_engines: + filepath = os.path.join(outdir, "compare.data") + pathlib.Path(filepath).write_text(self.compare_tests) + + def _write_html(self, comparison = False): # Gather intermediate data for all tests. - failed_data = sorted(glob.glob(os.path.join(self.output_dir, "*/failed.data"))) - passed_data = sorted(glob.glob(os.path.join(self.output_dir, "*/passed.data"))) + if comparison: + failed_data = [] + passed_data = sorted(glob.glob(os.path.join(self.output_dir, "*/compare.data"))) + else: + failed_data = sorted(glob.glob(os.path.join(self.output_dir, "*/failed.data"))) + passed_data = sorted(glob.glob(os.path.join(self.output_dir, "*/passed.data"))) failed_tests = "" passed_tests = "" @@ -171,6 +190,13 @@ class Report: else: message = "" + if comparison: + title = "Render Test Compare" + columns_html = "
Name | New | Reference | Diff | + {columns_html}
---|