Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-05-06 20:46:32 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-05-06 21:10:08 +0300
commitfb3e138ceedab82bc7c743c8cb4790fbadbb9986 (patch)
treee6ce43ca3ac46d057ec7a4f7545c084aca7a84c9 /tests/python/workbench_render_tests.py
parent51f222f91d94130090cfa355bc1e17b21c1d448f (diff)
Tests: add Eevee reference images, and add workbench tests
Being able to compare Eevee reference images is useful for refactoring I'm working on so might as well add them now, even if we can still improve them. Workbench tests are just rendering the same files as Cycles and Eevee. This doesn't really tests many workbench settings until we add tests specifically for them, but does cover how it it handles the different object types.
Diffstat (limited to 'tests/python/workbench_render_tests.py')
-rwxr-xr-xtests/python/workbench_render_tests.py120
1 files changed, 120 insertions, 0 deletions
diff --git a/tests/python/workbench_render_tests.py b/tests/python/workbench_render_tests.py
new file mode 100755
index 00000000000..5b759214140
--- /dev/null
+++ b/tests/python/workbench_render_tests.py
@@ -0,0 +1,120 @@
+#!/usr/bin/env python3
+# Apache License, Version 2.0
+
+import argparse
+import os
+import shlex
+import shutil
+import subprocess
+import sys
+
+
+def setup():
+ import bpy
+
+ scene = bpy.context.scene
+ scene.display.shading.color_type = 'TEXTURE'
+
+
+# When run from inside Blender, render and exit.
+try:
+ import bpy
+ inside_blender = True
+except ImportError:
+ inside_blender = False
+
+if inside_blender:
+ try:
+ setup()
+ except Exception as e:
+ print(e)
+ sys.exit(1)
+
+
+def render_file(filepath, output_filepath):
+ dirname = os.path.dirname(filepath)
+ basedir = os.path.dirname(dirname)
+ subject = os.path.basename(dirname)
+
+ frame_filepath = output_filepath + '0001.png'
+
+ command = [
+ BLENDER,
+ "--background",
+ "-noaudio",
+ "--factory-startup",
+ "--enable-autoexec",
+ filepath,
+ "-E", "BLENDER_WORKBENCH",
+ "-P",
+ os.path.realpath(__file__),
+ "-o", output_filepath,
+ "-F", "PNG",
+ "-f", "1"]
+
+ try:
+ # Success
+ output = subprocess.check_output(command)
+ if os.path.exists(frame_filepath):
+ shutil.copy(frame_filepath, output_filepath)
+ os.remove(frame_filepath)
+ if VERBOSE:
+ print(" ".join(command))
+ print(output.decode("utf-8"))
+ return None
+ except subprocess.CalledProcessError as e:
+ # Error
+ if os.path.exists(frame_filepath):
+ os.remove(frame_filepath)
+ if VERBOSE:
+ print(" ".join(command))
+ print(e.output.decode("utf-8"))
+ if b"Error: engine not found" in e.output:
+ return "NO_ENGINE"
+ elif b"blender probably wont start" in e.output:
+ return "NO_START"
+ return "CRASH"
+ except BaseException as e:
+ # Crash
+ if os.path.exists(frame_filepath):
+ os.remove(frame_filepath)
+ if VERBOSE:
+ print(" ".join(command))
+ print(e)
+ return "CRASH"
+
+
+def create_argparse():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("-blender", nargs="+")
+ parser.add_argument("-testdir", nargs=1)
+ parser.add_argument("-outdir", nargs=1)
+ parser.add_argument("-idiff", nargs=1)
+ return parser
+
+
+def main():
+ parser = create_argparse()
+ args = parser.parse_args()
+
+ global BLENDER, VERBOSE
+
+ BLENDER = args.blender[0]
+ VERBOSE = os.environ.get("BLENDER_VERBOSE") is not None
+
+ test_dir = args.testdir[0]
+ idiff = args.idiff[0]
+ output_dir = args.outdir[0]
+
+ from modules import render_report
+ report = render_report.Report("Workbench Test Report", output_dir, idiff)
+ report.set_pixelated(True)
+ report.set_reference_dir("workbench_renders")
+ report.set_compare_engines('workbench', 'eevee')
+ ok = report.run(test_dir, render_file)
+
+ sys.exit(not ok)
+
+
+if not inside_blender and __name__ == "__main__":
+ main()