Refactor: render tests, change how argparse is used

Some changes to how argparse is used in render tests:

1. Use the common approach of one dash for single-letter options (`-b`)
   and two dashes for longer options (`--blender`). In this commit that
   just means changing single-dashed (`-testdir`) to double-dashed
   (`--testdir`).

2. Remove unnecessary `nargs` arguments. The code was telling `argparse`
   to put CLI arguments into a list of one item, and then had code to
   turn that one-item list into the item itself. I've just removed the
   `nargs` argument altogether, as that just produces the desired
   value without requiring more code.

   I've also removed `nargs="+"` from the handling of the `--blender`
   parameter, as that allowed for multiple occurrences of `--blender
   {path}` but was silently ignoring all of those except the first.

   To ensure that required arguments are present, the code now uses
   `required=True` instead of `nargs`.

3. Add a `description` parameter so that `--help` shows what the
   test script actually does. Also it helps people (like me) who want
   to figure out which blend file is actually being opened by the
   test, without making the test itself more verbose.

No functional changes, except that you now cannot add multiple
`--blender` arguments any more (the CLI invocation will fail). This wasn't
used anywhere I could find, though.

Pull Request: https://projects.blender.org/blender/blender/pulls/131666
This commit is contained in:
Sybren A. Stüvel
2024-12-10 14:52:34 +01:00
parent 7a889b21bc
commit b7028617ad
10 changed files with 136 additions and 167 deletions

View File

@@ -109,7 +109,7 @@ endfunction()
# Run Python render test.
function(add_render_test testname testscript)
set(_args ${ARGN} -blender "${TEST_BLENDER_EXE}" -oiiotool "${OPENIMAGEIO_TOOL}")
set(_args ${ARGN} --blender "${TEST_BLENDER_EXE}" --oiiotool "${OPENIMAGEIO_TOOL}")
if(WITH_TESTS_BATCHED)
list(APPEND _args --batch)
endif()
@@ -622,8 +622,8 @@ if(TRUE)
add_render_test(
io_curve_svg_${render_test}
${CMAKE_CURRENT_LIST_DIR}/bl_io_curve_svg_test.py
-testdir "${TEST_SRC_DIR}/io_tests/svg/${render_test}"
-outdir "${TEST_OUT_DIR}/io_curve_svg"
--testdir "${TEST_SRC_DIR}/io_tests/svg/${render_test}"
--outdir "${TEST_OUT_DIR}/io_curve_svg"
)
endforeach()
@@ -714,10 +714,10 @@ if(WITH_CYCLES OR WITH_GPU_RENDER_TESTS)
add_render_test(
${_cycles_test_name}
${CMAKE_CURRENT_LIST_DIR}/cycles_render_tests.py
-testdir "${TEST_SRC_DIR}/render/${render_test}"
-outdir "${TEST_OUT_DIR}/cycles"
-device ${_cycles_device}
-blocklist ${_cycles_blocklist}
--testdir "${TEST_SRC_DIR}/render/${render_test}"
--outdir "${TEST_OUT_DIR}/cycles"
--device ${_cycles_device}
--blocklist ${_cycles_blocklist}
)
if(NOT ("${_cycles_device_lower}" STREQUAL "cpu"))
set_tests_properties(${_cycles_test_name} PROPERTIES RUN_SERIAL TRUE)
@@ -731,10 +731,10 @@ if(WITH_CYCLES OR WITH_GPU_RENDER_TESTS)
add_render_test(
${_cycles_test_name}_osl
${CMAKE_CURRENT_LIST_DIR}/cycles_render_tests.py
-testdir "${TEST_SRC_DIR}/render/${render_test}"
-outdir "${TEST_OUT_DIR}/cycles_osl"
-device ${_cycles_device}
-osl
--testdir "${TEST_SRC_DIR}/render/${render_test}"
--outdir "${TEST_OUT_DIR}/cycles_osl"
--device ${_cycles_device}
--osl
)
# Doesn't do anything until OptiX is enabled
if(NOT ("${_cycles_device_lower}" STREQUAL "cpu"))
@@ -764,8 +764,8 @@ if(WITH_CYCLES OR WITH_GPU_RENDER_TESTS)
add_render_test(
eevee_next_${render_test}_opengl
${CMAKE_CURRENT_LIST_DIR}/eevee_next_render_tests.py
-testdir "${TEST_SRC_DIR}/render/${render_test}"
-outdir "${TEST_OUT_DIR}/eevee_next"
--testdir "${TEST_SRC_DIR}/render/${render_test}"
--outdir "${TEST_OUT_DIR}/eevee_next"
--gpu-backend opengl
${_gpu_render_tests_arguments}
)
@@ -777,8 +777,8 @@ if(WITH_CYCLES OR WITH_GPU_RENDER_TESTS)
add_render_test(
eevee_next_${render_test}_metal
${CMAKE_CURRENT_LIST_DIR}/eevee_next_render_tests.py
-testdir "${TEST_SRC_DIR}/render/${render_test}"
-outdir "${TEST_OUT_DIR}/eevee_next"
--testdir "${TEST_SRC_DIR}/render/${render_test}"
--outdir "${TEST_OUT_DIR}/eevee_next"
--gpu-backend metal
${_gpu_render_tests_arguments}
)
@@ -790,8 +790,8 @@ if(WITH_CYCLES OR WITH_GPU_RENDER_TESTS)
add_render_test(
eevee_next_${render_test}_vulkan
${CMAKE_CURRENT_LIST_DIR}/eevee_next_render_tests.py
-testdir "${TEST_SRC_DIR}/render/${render_test}"
-outdir "${TEST_OUT_DIR}/eevee_next"
--testdir "${TEST_SRC_DIR}/render/${render_test}"
--outdir "${TEST_OUT_DIR}/eevee_next"
--gpu-backend vulkan
${_gpu_render_tests_arguments}
)
@@ -804,8 +804,8 @@ if(WITH_CYCLES OR WITH_GPU_RENDER_TESTS)
add_render_test(
workbench_${render_test}_opengl
${CMAKE_CURRENT_LIST_DIR}/workbench_render_tests.py
-testdir "${TEST_SRC_DIR}/render/${render_test}"
-outdir "${TEST_OUT_DIR}/workbench"
--testdir "${TEST_SRC_DIR}/render/${render_test}"
--outdir "${TEST_OUT_DIR}/workbench"
--gpu-backend opengl
${_gpu_render_tests_arguments}
)
@@ -817,8 +817,8 @@ if(WITH_CYCLES OR WITH_GPU_RENDER_TESTS)
add_render_test(
workbench_${render_test}_metal
${CMAKE_CURRENT_LIST_DIR}/workbench_render_tests.py
-testdir "${TEST_SRC_DIR}/render/${render_test}"
-outdir "${TEST_OUT_DIR}/workbench"
--testdir "${TEST_SRC_DIR}/render/${render_test}"
--outdir "${TEST_OUT_DIR}/workbench"
--gpu-backend metal
${_gpu_render_tests_arguments}
)
@@ -830,8 +830,8 @@ if(WITH_CYCLES OR WITH_GPU_RENDER_TESTS)
add_render_test(
workbench_${render_test}_vulkan
${CMAKE_CURRENT_LIST_DIR}/workbench_render_tests.py
-testdir "${TEST_SRC_DIR}/render/${render_test}"
-outdir "${TEST_OUT_DIR}/workbench"
--testdir "${TEST_SRC_DIR}/render/${render_test}"
--outdir "${TEST_OUT_DIR}/workbench"
--gpu-backend vulkan
${_gpu_render_tests_arguments}
)
@@ -844,8 +844,8 @@ if(WITH_CYCLES OR WITH_GPU_RENDER_TESTS)
add_render_test(
storm_hydra_${render_test}
${CMAKE_CURRENT_LIST_DIR}/storm_render_tests.py
-testdir "${TEST_SRC_DIR}/render/${render_test}"
-outdir "${TEST_OUT_DIR}/storm_hydra"
--testdir "${TEST_SRC_DIR}/render/${render_test}"
--outdir "${TEST_OUT_DIR}/storm_hydra"
-export_method "HYDRA"
${_gpu_render_tests_arguments}
)
@@ -855,8 +855,8 @@ if(WITH_CYCLES OR WITH_GPU_RENDER_TESTS)
add_render_test(
storm_usd_${render_test}
${CMAKE_CURRENT_LIST_DIR}/storm_render_tests.py
-testdir "${TEST_SRC_DIR}/render/${render_test}"
-outdir "${TEST_OUT_DIR}/storm_usd"
--testdir "${TEST_SRC_DIR}/render/${render_test}"
--outdir "${TEST_OUT_DIR}/storm_usd"
-export_method "USD"
${_gpu_render_tests_arguments}
)
@@ -890,8 +890,8 @@ if(WITH_COMPOSITOR_CPU)
add_render_test(
compositor_${comp_test}_cpu
${CMAKE_CURRENT_LIST_DIR}/compositor_cpu_render_tests.py
-testdir "${TEST_SRC_DIR}/compositor/${comp_test}"
-outdir "${TEST_OUT_DIR}/compositor_cpu"
--testdir "${TEST_SRC_DIR}/compositor/${comp_test}"
--outdir "${TEST_OUT_DIR}/compositor_cpu"
)
endforeach()
@@ -922,8 +922,8 @@ if(WITH_COMPOSITOR_REALTIME_TESTS AND WITH_COMPOSITOR_CPU)
add_render_test(
compositor_${comp_test}_realtime
${CMAKE_CURRENT_LIST_DIR}/compositor_realtime_render_tests.py
-testdir "${TEST_SRC_DIR}/compositor/${comp_test}"
-outdir "${TEST_OUT_DIR}/compositor_realtime"
--testdir "${TEST_SRC_DIR}/compositor/${comp_test}"
--outdir "${TEST_OUT_DIR}/compositor_realtime"
)
endforeach()
endif()
@@ -1013,8 +1013,8 @@ if(WITH_GPU_DRAW_TESTS)
add_render_test(
opengl_draw_${child}
${CMAKE_CURRENT_LIST_DIR}/opengl_draw_tests.py
-testdir "${child_path}"
-outdir "${TEST_OUT_DIR}/opengl_draw"
--testdir "${child_path}"
--outdir "${TEST_OUT_DIR}/opengl_draw"
)
endif()
endif()
@@ -1128,8 +1128,8 @@ else()
add_render_test(
sequencer_render_${render_test}
${CMAKE_CURRENT_LIST_DIR}/sequencer_render_tests.py
-testdir "${TEST_SRC_DIR}/sequence_editing/${render_test}"
-outdir "${TEST_OUT_DIR}/sequence_editing"
--testdir "${TEST_SRC_DIR}/sequence_editing/${render_test}"
--outdir "${TEST_OUT_DIR}/sequence_editing"
)
endforeach()
endif()

View File

@@ -31,11 +31,13 @@ def get_arguments(filepath, output_filepath):
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("-oiiotool", nargs=1)
parser = argparse.ArgumentParser(
description="Run test script for each blend file in TESTDIR, comparing the render result with known output."
)
parser.add_argument("--blender", required=True)
parser.add_argument("--testdir", required=True)
parser.add_argument("--outdir", required=True)
parser.add_argument("--oiiotool", required=True)
parser.add_argument('--batch', default=False, action='store_true')
return parser
@@ -44,20 +46,15 @@ def main():
parser = create_argparse()
args = parser.parse_args()
blender = args.blender[0]
test_dir = args.testdir[0]
oiiotool = args.oiiotool[0]
output_dir = args.outdir[0]
from modules import render_report
report = render_report.Report('IO Curve SVG', output_dir, oiiotool)
report = render_report.Report('IO Curve SVG', args.outdir, args.oiiotool)
report.set_pixelated(True)
test_dir_name = Path(test_dir).name
test_dir_name = Path(args.testdir).name
if test_dir_name == 'complex':
report.set_fail_percent(0.01)
ok = report.run(test_dir, blender, get_arguments, batch=args.batch)
ok = report.run(args.testdir, args.blender, get_arguments, batch=args.batch)
sys.exit(not ok)

View File

@@ -35,11 +35,13 @@ def get_arguments(filepath, output_filepath):
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("-oiiotool", nargs=1)
parser = argparse.ArgumentParser(
description="Run test script for each blend file in TESTDIR, comparing the render result with known output."
)
parser.add_argument("--blender", required=True)
parser.add_argument("--testdir", required=True)
parser.add_argument("--outdir", required=True)
parser.add_argument("--oiiotool", required=True)
parser.add_argument('--batch', default=False, action='store_true')
return parser
@@ -48,20 +50,15 @@ def main():
parser = create_argparse()
args = parser.parse_args()
blender = args.blender[0]
test_dir = args.testdir[0]
oiiotool = args.oiiotool[0]
output_dir = args.outdir[0]
from modules import render_report
report = render_report.Report("Compositor CPU", output_dir, oiiotool)
report = render_report.Report("Compositor CPU", args.outdir, args.oiiotool)
report.set_pixelated(True)
report.set_reference_dir("compositor_cpu_renders")
if os.path.basename(test_dir) == 'filter':
if os.path.basename(args.testdir) == 'filter':
# Temporary change to pass OpenImageDenoise test with both 1.3 and 1.4.
report.set_fail_threshold(0.05)
elif os.path.basename(test_dir) == 'matte':
elif os.path.basename(args.testdir) == 'matte':
# The node_keying_matte.blend test is very sensitive to the exact values in the
# input image. It makes it hard to precisely match results on different systems
# (with and without SSE, i.e.), especially when OCIO has different precision for
@@ -69,7 +66,7 @@ def main():
report.set_fail_threshold(0.06)
report.set_fail_percent(2)
ok = report.run(test_dir, blender, get_arguments, batch=args.batch)
ok = report.run(args.testdir, args.blender, get_arguments, batch=args.batch)
sys.exit(not ok)

View File

@@ -36,11 +36,13 @@ def get_arguments(filepath, output_filepath):
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("-oiiotool", nargs=1)
parser = argparse.ArgumentParser(
description="Run test script for each blend file in TESTDIR, comparing the render result with known output."
)
parser.add_argument("--blender", required=True)
parser.add_argument("--testdir", required=True)
parser.add_argument("--outdir", required=True)
parser.add_argument("--oiiotool", required=True)
parser.add_argument('--batch', default=False, action='store_true')
return parser
@@ -49,16 +51,11 @@ def main():
parser = create_argparse()
args = parser.parse_args()
blender = args.blender[0]
test_dir = args.testdir[0]
oiiotool = args.oiiotool[0]
output_dir = args.outdir[0]
from modules import render_report
report = render_report.Report("Compositor Realtime", output_dir, oiiotool)
report = render_report.Report("Compositor Realtime", args.outdir, args.oiiotool)
report.set_reference_dir("compositor_realtime_renders")
ok = report.run(test_dir, blender, get_arguments, batch=args.batch)
ok = report.run(args.testdir, args.blender, get_arguments, batch=args.batch)
sys.exit(not ok)

View File

@@ -209,14 +209,16 @@ def get_arguments(filepath, output_filepath, use_hwrt=False, osl=False):
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("-oiiotool", nargs=1)
parser.add_argument("-device", nargs=1)
parser.add_argument("-blocklist", nargs="*", default=[])
parser.add_argument("-osl", default=False, action='store_true')
parser = argparse.ArgumentParser(
description="Run test script for each blend file in TESTDIR, comparing the render result with known output."
)
parser.add_argument("--blender", required=True)
parser.add_argument("--testdir", required=True)
parser.add_argument("--outdir", required=True)
parser.add_argument("--oiiotool", required=True)
parser.add_argument("--device", required=True)
parser.add_argument("--blocklist", nargs="*", default=[])
parser.add_argument("--osl", default=False, action='store_true')
parser.add_argument('--batch', default=False, action='store_true')
return parser
@@ -225,11 +227,7 @@ def main():
parser = create_argparse()
args = parser.parse_args()
blender = args.blender[0]
test_dir = args.testdir[0]
oiiotool = args.oiiotool[0]
output_dir = args.outdir[0]
device = args.device[0]
device = args.device
blocklist = BLOCKLIST_ALL
if device != 'CPU':
@@ -245,7 +243,7 @@ def main():
if args.osl:
blocklist += BLOCKLIST_OSL
report = CyclesReport('Cycles', output_dir, oiiotool, device, blocklist, args.osl)
report = CyclesReport('Cycles', args.outdir, args.oiiotool, device, blocklist, args.osl)
report.set_pixelated(True)
report.set_reference_dir("cycles_renders")
if device == 'CPU':
@@ -262,11 +260,11 @@ def main():
# Blackbody is slightly different between SVM and OSL.
# Microfacet hair renders slightly differently, and fails on Windows and Linux with OSL
test_dir_name = Path(test_dir).name
test_dir_name = Path(args.testdir).name
if (test_dir_name in {'motion_blur', 'integrator'}) or ((args.osl) and (test_dir_name in {'shader', 'hair'})):
report.set_fail_threshold(0.032)
ok = report.run(test_dir, blender, get_arguments, batch=args.batch)
ok = report.run(args.testdir, args.blender, get_arguments, batch=args.batch)
sys.exit(not ok)

View File

@@ -183,14 +183,16 @@ def get_arguments(filepath, output_filepath, gpu_backend):
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("-oiiotool", nargs=1)
parser = argparse.ArgumentParser(
description="Run test script for each blend file in TESTDIR, comparing the render result with known output."
)
parser.add_argument("--blender", required=True)
parser.add_argument("--testdir", required=True)
parser.add_argument("--outdir", required=True)
parser.add_argument("--oiiotool", required=True)
parser.add_argument('--batch', default=False, action='store_true')
parser.add_argument('--fail-silently', default=False, action='store_true')
parser.add_argument('--gpu-backend', nargs=1)
parser.add_argument('--gpu-backend')
return parser
@@ -198,19 +200,13 @@ def main():
parser = create_argparse()
args = parser.parse_args()
blender = args.blender[0]
test_dir = args.testdir[0]
oiiotool = args.oiiotool[0]
output_dir = args.outdir[0]
gpu_backend = args.gpu_backend[0]
gpu_device_type = get_gpu_device_type(blender)
gpu_device_type = get_gpu_device_type(args.blender)
reference_override_dir = None
if gpu_device_type == "AMD":
reference_override_dir = "eevee_next_renders/amd"
report = EEVEEReport("Eevee Next", output_dir, oiiotool, device=gpu_backend, blocklist=BLOCKLIST)
if gpu_backend == "vulkan":
report = EEVEEReport("Eevee Next", args.outdir, args.oiiotool, device=args.gpu_backend, blocklist=BLOCKLIST)
if args.gpu_backend == "vulkan":
report.set_compare_engine('eevee_next', 'opengl')
else:
report.set_compare_engine('cycles', 'CPU')
@@ -219,7 +215,7 @@ def main():
report.set_reference_dir("eevee_next_renders")
report.set_reference_override_dir(reference_override_dir)
test_dir_name = Path(test_dir).name
test_dir_name = Path(args.testdir).name
if test_dir_name.startswith('image_mapping'):
# Platform dependent border values. To be fixed
report.set_fail_threshold(0.2)
@@ -241,7 +237,7 @@ def main():
# points transparent
report.set_fail_threshold(0.06)
ok = report.run(test_dir, blender, get_arguments, batch=args.batch, fail_silently=args.fail_silently)
ok = report.run(args.testdir, args.blender, get_arguments, batch=args.batch, fail_silently=args.fail_silently)
sys.exit(not ok)

View File

@@ -50,11 +50,13 @@ def get_arguments(filepath, output_filepath):
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("-oiiotool", nargs=1)
parser = argparse.ArgumentParser(
description="Run test script for each blend file in TESTDIR, comparing the render result with known output."
)
parser.add_argument("--blender", required=True)
parser.add_argument("--testdir", required=True)
parser.add_argument("--outdir", required=True)
parser.add_argument("--oiiotool", required=True)
return parser
@@ -62,14 +64,9 @@ def main():
parser = create_argparse()
args = parser.parse_args()
blender = args.blender[0]
test_dir = args.testdir[0]
oiiotool = args.oiiotool[0]
output_dir = args.outdir[0]
from modules import render_report
report = render_report.Report("OpenGL Draw", output_dir, oiiotool)
ok = report.run(test_dir, blender, get_arguments)
report = render_report.Report("OpenGL Draw", args.outdir, args.oiiotool)
ok = report.run(args.testdir, args.blender, get_arguments)
sys.exit(not ok)

View File

@@ -28,11 +28,13 @@ def get_arguments(filepath, output_filepath):
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("-oiiotool", nargs=1)
parser = argparse.ArgumentParser(
description="Run test script for each blend file in TESTDIR, comparing the render result with known output."
)
parser.add_argument("--blender", required=True)
parser.add_argument("--testdir", required=True)
parser.add_argument("--outdir", required=True)
parser.add_argument("--oiiotool", required=True)
parser.add_argument("--batch", default=False, action="store_true")
return parser
@@ -41,21 +43,15 @@ def main():
parser = create_argparse()
args = parser.parse_args()
blender = args.blender[0]
test_dir = args.testdir[0]
oiiotool = args.oiiotool[0]
output_dir = args.outdir[0]
from modules import render_report
report = render_report.Report("Sequencer", output_dir, oiiotool)
report = render_report.Report("Sequencer", args.outdir, args.oiiotool)
report.set_pixelated(True)
# Default error tolerances are quite large, lower them.
report.set_fail_threshold(2.0 / 255.0)
report.set_fail_percent(0.01)
report.set_reference_dir("reference")
test_dir_name = Path(test_dir).name
ok = report.run(test_dir, blender, get_arguments, batch=args.batch)
ok = report.run(args.testdir, args.blender, get_arguments, batch=args.batch)
sys.exit(not ok)

View File

@@ -51,12 +51,14 @@ def get_arguments(filepath, output_filepath):
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("-oiiotool", nargs=1)
parser.add_argument("-export_method", nargs=1)
parser = argparse.ArgumentParser(
description="Run test script for each blend file in TESTDIR, comparing the render result with known output."
)
parser.add_argument("--blender", required=True)
parser.add_argument("--testdir", required=True)
parser.add_argument("--outdir", required=True)
parser.add_argument("--oiiotool", required=True)
parser.add_argument("--export_method", required=True)
parser.add_argument('--batch', default=False, action='store_true')
parser.add_argument('--fail-silently', default=False, action='store_true')
return parser
@@ -66,30 +68,24 @@ def main():
parser = create_argparse()
args = parser.parse_args()
blender = args.blender[0]
test_dir = args.testdir[0]
oiiotool = args.oiiotool[0]
output_dir = args.outdir[0]
export_method = args.export_method[0]
from modules import render_report
if export_method == 'HYDRA':
report = render_report.Report("Storm Hydra", output_dir, oiiotool)
if args.export_method == 'HYDRA':
report = render_report.Report("Storm Hydra", args.outdir, args.oiiotool)
report.set_reference_dir("storm_hydra_renders")
report.set_compare_engine('cycles', 'CPU')
else:
report = render_report.Report("Storm USD", output_dir, oiiotool)
report = render_report.Report("Storm USD", args.outdir, args.oiiotool)
report.set_reference_dir("storm_usd_renders")
report.set_compare_engine('storm_hydra')
report.set_pixelated(True)
test_dir_name = Path(test_dir).name
test_dir_name = Path(args.testdir).name
os.environ['BLENDER_HYDRA_EXPORT_METHOD'] = export_method
os.environ['BLENDER_HYDRA_EXPORT_METHOD'] = args.export_method
ok = report.run(test_dir, blender, get_arguments, batch=args.batch, fail_silently=args.fail_silently)
ok = report.run(args.testdir, args.blender, get_arguments, batch=args.batch, fail_silently=args.fail_silently)
sys.exit(not ok)

View File

@@ -74,14 +74,16 @@ def get_arguments(filepath, output_filepath, gpu_backend):
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("-oiiotool", nargs=1)
parser = argparse.ArgumentParser(
description="Run test script for each blend file in TESTDIR, comparing the render result with known output."
)
parser.add_argument("--blender", required=True)
parser.add_argument("--testdir", required=True)
parser.add_argument("--outdir", required=True)
parser.add_argument("--oiiotool", required=True)
parser.add_argument('--batch', default=False, action='store_true')
parser.add_argument('--fail-silently', default=False, action='store_true')
parser.add_argument('--gpu-backend', nargs=1)
parser.add_argument('--gpu-backend')
return parser
@@ -89,26 +91,19 @@ def main():
parser = create_argparse()
args = parser.parse_args()
blender = args.blender[0]
test_dir = args.testdir[0]
oiiotool = args.oiiotool[0]
output_dir = args.outdir[0]
gpu_backend = args.gpu_backend[0]
from modules import render_report
report = WorkbenchReport("Workbench", output_dir, oiiotool, device=gpu_backend)
if gpu_backend == "vulkan":
report = WorkbenchReport("Workbench", args.outdir, args.oiiotool, device=args.gpu_backend)
if args.gpu_backend == "vulkan":
report.set_compare_engine('workbench', 'opengl')
else:
report.set_compare_engine('eevee_next', 'opengl')
report.set_pixelated(True)
report.set_reference_dir("workbench_renders")
test_dir_name = Path(test_dir).name
test_dir_name = Path(args.testdir).name
if test_dir_name.startswith('hair') and platform.system() == "Darwin":
report.set_fail_threshold(0.050)
ok = report.run(test_dir, blender, get_arguments, batch=args.batch, fail_silently=args.fail_silently)
ok = report.run(args.testdir, args.blender, get_arguments, batch=args.batch, fail_silently=args.fail_silently)
sys.exit(not ok)