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
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt13
-rw-r--r--tests/blender_as_python_module/CMakeLists.txt2
-rw-r--r--tests/blender_as_python_module/import_bpy.py4
-rw-r--r--tests/gtests/runner/CMakeLists.txt2
-rw-r--r--tests/python/CMakeLists.txt16
-rw-r--r--tests/python/bl_blendfile_io.py4
-rw-r--r--tests/python/bl_blendfile_liblink.py264
-rw-r--r--tests/python/bl_blendfile_library_overrides.py140
-rw-r--r--tests/python/bl_keymap_validate.py2
-rw-r--r--tests/python/bl_load_addons.py6
-rw-r--r--tests/python/bl_load_py_modules.py2
-rw-r--r--tests/python/bl_mesh_modifiers.py6
-rw-r--r--tests/python/bl_pyapi_idprop.py2
-rw-r--r--tests/python/bl_rna_manual_reference.py8
-rw-r--r--tests/python/bl_run_operators_event_simulate.py2
-rw-r--r--tests/python/collada/CMakeLists.txt4
-rw-r--r--tests/python/modifiers.py10
-rw-r--r--tests/python/modules/mesh_test.py96
-rwxr-xr-xtests/python/modules/test_utils.py4
-rw-r--r--tests/python/view_layer/CMakeLists.txt254
20 files changed, 419 insertions, 422 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 484ffd17046..68fcfc89b96 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -5,39 +5,30 @@
#
# Getting the install path of the executable is somewhat involved, as there are
# no direct CMake generator expressions to get the install paths of executables.
-get_property(GENERATOR_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
-if(GENERATOR_IS_MULTI_CONFIG)
- string(REPLACE "\${BUILD_TYPE}" "$<CONFIG>" TEST_INSTALL_DIR ${CMAKE_INSTALL_PREFIX})
-else()
- string(REPLACE "\${BUILD_TYPE}" "" TEST_INSTALL_DIR ${CMAKE_INSTALL_PREFIX})
-endif()
+set(TEST_INSTALL_DIR ${CMAKE_INSTALL_PREFIX_WITH_CONFIG})
# Path to Blender and Python executables for all platforms.
if(MSVC)
set(TEST_BLENDER_EXE ${TEST_INSTALL_DIR}/blender.exe)
- set(_default_test_python_exe "${TEST_INSTALL_DIR}/${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}/python/bin/python$<$<CONFIG:Debug>:_d>")
elseif(APPLE)
set(TEST_BLENDER_EXE ${TEST_INSTALL_DIR}/Blender.app/Contents/MacOS/Blender)
- set(_default_test_python_exe ${PYTHON_EXECUTABLE})
else()
if(WITH_INSTALL_PORTABLE)
set(TEST_BLENDER_EXE ${TEST_INSTALL_DIR}/blender)
else()
set(TEST_BLENDER_EXE ${TEST_INSTALL_DIR}/bin/blender)
endif()
- set(_default_test_python_exe ${PYTHON_EXECUTABLE})
endif()
# The installation directory's Python is the best one to use. However, it can only be there after the install step,
# which means that Python will never be there on a fresh system. To suit different needs, the user can pass
# -DTEST_PYTHON_EXE=/path/to/python to CMake.
if(NOT TEST_PYTHON_EXE)
- set(TEST_PYTHON_EXE ${_default_test_python_exe})
+ set(TEST_PYTHON_EXE ${PYTHON_EXECUTABLE})
message(STATUS "Tests: Using Python executable: ${TEST_PYTHON_EXE}")
elseif(NOT EXISTS ${TEST_PYTHON_EXE})
message(FATAL_ERROR "Tests: TEST_PYTHON_EXE ${TEST_PYTHON_EXE} does not exist")
endif()
-unset(_default_test_python_exe)
# For testing with Valgrind
diff --git a/tests/blender_as_python_module/CMakeLists.txt b/tests/blender_as_python_module/CMakeLists.txt
index 334b3288246..4f6cf0adfdb 100644
--- a/tests/blender_as_python_module/CMakeLists.txt
+++ b/tests/blender_as_python_module/CMakeLists.txt
@@ -12,4 +12,4 @@ function(add_blender_as_python_module_test testname testscript)
)
endfunction()
-add_blender_as_python_module_test(import_bpy ${CMAKE_CURRENT_LIST_DIR}/import_bpy.py)
+add_blender_as_python_module_test(import_bpy ${CMAKE_CURRENT_LIST_DIR}/import_bpy.py ${CMAKE_INSTALL_PREFIX_WITH_CONFIG})
diff --git a/tests/blender_as_python_module/import_bpy.py b/tests/blender_as_python_module/import_bpy.py
index ea75c0f2fe6..223ed998707 100644
--- a/tests/blender_as_python_module/import_bpy.py
+++ b/tests/blender_as_python_module/import_bpy.py
@@ -1,4 +1,8 @@
# SPDX-License-Identifier: GPL-2.0-or-later
+# Add directory with module to the path.
+import sys
+sys.path.append(sys.argv[1])
+
# Just import bpy and see if there are any dynamic loader errors.
import bpy
diff --git a/tests/gtests/runner/CMakeLists.txt b/tests/gtests/runner/CMakeLists.txt
index 97b95851be8..be0aa65d409 100644
--- a/tests/gtests/runner/CMakeLists.txt
+++ b/tests/gtests/runner/CMakeLists.txt
@@ -27,7 +27,7 @@ else()
endif()
# This builds `bin/tests/blender_test`, but does not add it as a single test.
-BLENDER_SRC_GTEST_EX(
+blender_src_gtest_ex(
NAME blender
SRC "${SRC}"
EXTRA_LIBS "${TEST_LIBS}"
diff --git a/tests/python/CMakeLists.txt b/tests/python/CMakeLists.txt
index ca3070b60ad..27473061304 100644
--- a/tests/python/CMakeLists.txt
+++ b/tests/python/CMakeLists.txt
@@ -632,13 +632,13 @@ endif()
if(WITH_CYCLES OR WITH_OPENGL_RENDER_TESTS)
if(NOT OPENIMAGEIO_IDIFF)
- MESSAGE(WARNING "Disabling render tests because OIIO idiff does not exist")
+ message(WARNING "Disabling render tests because OIIO idiff does not exist")
elseif(NOT EXISTS "${TEST_SRC_DIR}/render/shader")
- MESSAGE(WARNING "Disabling render tests because tests folder does not exist at ${TEST_SRC_DIR}")
+ message(WARNING "Disabling render tests because tests folder does not exist at ${TEST_SRC_DIR}")
elseif(NOT WITH_COMPOSITOR_CPU)
- MESSAGE(WARNING "Disabling render tests because WITH_COMPOSITOR_CPU is disabled")
+ message(WARNING "Disabling render tests because WITH_COMPOSITOR_CPU is disabled")
elseif(NOT WITH_OPENCOLORIO)
- MESSAGE(WARNING "Disabling render tests because WITH_OPENCOLORIO is disabled")
+ message(WARNING "Disabling render tests because WITH_OPENCOLORIO is disabled")
else()
set(render_tests
camera
@@ -801,15 +801,15 @@ foreach(geo_node_test ${geo_node_tests})
)
endforeach()
else()
- MESSAGE(STATUS "Directory named ${TEST_SRC_DIR}/modeling/geometry_nodes/${geo_node_test}/ Not Found, disabling test.")
+ message(STATUS "Directory named ${TEST_SRC_DIR}/modeling/geometry_nodes/${geo_node_test}/ Not Found, disabling test.")
endif()
endforeach()
if(WITH_OPENGL_DRAW_TESTS)
if(NOT OPENIMAGEIO_IDIFF)
- MESSAGE(STATUS "Disabling OpenGL draw tests because OIIO idiff does not exist")
+ message(STATUS "Disabling OpenGL draw tests because OIIO idiff does not exist")
elseif(NOT EXISTS "${TEST_SRC_DIR}/opengl")
- MESSAGE(STATUS "Disabling OpenGL draw tests because tests folder does not exist at ${TEST_SRC_DIR}")
+ message(STATUS "Disabling OpenGL draw tests because tests folder does not exist at ${TEST_SRC_DIR}")
else()
# Use all subdirectories of opengl folder.
file(GLOB children RELATIVE ${TEST_SRC_DIR}/opengl ${TEST_SRC_DIR}/opengl/*)
@@ -881,7 +881,7 @@ endif()
# SEQUENCER RENDER TESTS
if(NOT OPENIMAGEIO_IDIFF)
- MESSAGE(STATUS "Disabling sequencer render tests because OIIO idiff does not exist")
+ message(STATUS "Disabling sequencer render tests because OIIO idiff does not exist")
else()
set(render_tests
transform
diff --git a/tests/python/bl_blendfile_io.py b/tests/python/bl_blendfile_io.py
index f79ee2a240b..fa63b789751 100644
--- a/tests/python/bl_blendfile_io.py
+++ b/tests/python/bl_blendfile_io.py
@@ -33,7 +33,7 @@ class TestBlendFileSaveLoadBasic(TestHelper):
read_data = self.blender_data_to_tuple(bpy.data, "read_data 1")
# We have orphaned data, which should be removed by file reading, so there should not be equality here.
- assert(orig_data != read_data)
+ assert orig_data != read_data
bpy.data.orphans_purge()
@@ -44,7 +44,7 @@ class TestBlendFileSaveLoadBasic(TestHelper):
read_data = self.blender_data_to_tuple(bpy.data, "read_data 2")
- assert(orig_data == read_data)
+ assert orig_data == read_data
TESTS = (
diff --git a/tests/python/bl_blendfile_liblink.py b/tests/python/bl_blendfile_liblink.py
index 120afba4911..a4ca845da4e 100644
--- a/tests/python/bl_blendfile_liblink.py
+++ b/tests/python/bl_blendfile_liblink.py
@@ -93,9 +93,9 @@ class TestBlendLibLinkSaveLoadBasic(TestBlendLibLinkHelper):
link_dir = os.path.join(output_lib_path, "Mesh")
bpy.ops.wm.link(directory=link_dir, filename="LibMesh", instance_object_data=False)
- assert(len(bpy.data.meshes) == 1)
- assert(len(bpy.data.objects) == 0)
- assert(len(bpy.data.collections) == 0) # Scene's master collection is not listed here
+ assert len(bpy.data.meshes) == 1
+ assert len(bpy.data.objects) == 0
+ assert len(bpy.data.collections) == 0 # Scene's master collection is not listed here
orig_data = self.blender_data_to_tuple(bpy.data, "orig_data")
@@ -106,8 +106,8 @@ class TestBlendLibLinkSaveLoadBasic(TestBlendLibLinkHelper):
read_data = self.blender_data_to_tuple(bpy.data, "read_data")
# Since there is no usage of linked mesh, it is lost during save/reload.
- assert(len(bpy.data.meshes) == 0)
- assert(orig_data != read_data)
+ assert len(bpy.data.meshes) == 0
+ assert orig_data != read_data
# Simple link of a single ObData with obdata instantiation.
self.reset_blender()
@@ -115,9 +115,9 @@ class TestBlendLibLinkSaveLoadBasic(TestBlendLibLinkHelper):
link_dir = os.path.join(output_lib_path, "Mesh")
bpy.ops.wm.link(directory=link_dir, filename="LibMesh", instance_object_data=True)
- assert(len(bpy.data.meshes) == 1)
- assert(len(bpy.data.objects) == 1) # Instance created for the mesh ObData.
- assert(len(bpy.data.collections) == 0) # Scene's master collection is not listed here
+ assert len(bpy.data.meshes) == 1
+ assert len(bpy.data.objects) == 1 # Instance created for the mesh ObData.
+ assert len(bpy.data.collections) == 0 # Scene's master collection is not listed here
orig_data = self.blender_data_to_tuple(bpy.data, "orig_data")
@@ -126,7 +126,7 @@ class TestBlendLibLinkSaveLoadBasic(TestBlendLibLinkHelper):
read_data = self.blender_data_to_tuple(bpy.data, "read_data")
- assert(orig_data == read_data)
+ assert orig_data == read_data
# Simple link of a single Object.
self.reset_blender()
@@ -134,9 +134,9 @@ class TestBlendLibLinkSaveLoadBasic(TestBlendLibLinkHelper):
link_dir = os.path.join(output_lib_path, "Object")
bpy.ops.wm.link(directory=link_dir, filename="LibMesh")
- assert(len(bpy.data.meshes) == 1)
- assert(len(bpy.data.objects) == 1)
- assert(len(bpy.data.collections) == 0) # Scene's master collection is not listed here
+ assert len(bpy.data.meshes) == 1
+ assert len(bpy.data.objects) == 1
+ assert len(bpy.data.collections) == 0 # Scene's master collection is not listed here
orig_data = self.blender_data_to_tuple(bpy.data, "orig_data")
@@ -145,7 +145,7 @@ class TestBlendLibLinkSaveLoadBasic(TestBlendLibLinkHelper):
read_data = self.blender_data_to_tuple(bpy.data, "read_data")
- assert(orig_data == read_data)
+ assert orig_data == read_data
# Simple link of a single Collection, with Empty-instantiation.
self.reset_blender()
@@ -153,9 +153,9 @@ class TestBlendLibLinkSaveLoadBasic(TestBlendLibLinkHelper):
link_dir = os.path.join(output_lib_path, "Collection")
bpy.ops.wm.link(directory=link_dir, filename="LibMesh", instance_collections=True)
- assert(len(bpy.data.meshes) == 1)
- assert(len(bpy.data.objects) == 2) # linked object and local empty instancing the collection
- assert(len(bpy.data.collections) == 1) # Scene's master collection is not listed here
+ assert len(bpy.data.meshes) == 1
+ assert len(bpy.data.objects) == 2 # linked object and local empty instancing the collection
+ assert len(bpy.data.collections) == 1 # Scene's master collection is not listed here
orig_data = self.blender_data_to_tuple(bpy.data, "orig_data")
@@ -164,7 +164,7 @@ class TestBlendLibLinkSaveLoadBasic(TestBlendLibLinkHelper):
read_data = self.blender_data_to_tuple(bpy.data, "read_data")
- assert(orig_data == read_data)
+ assert orig_data == read_data
# Simple link of a single Collection, with ViewLayer-instantiation.
self.reset_blender()
@@ -172,11 +172,11 @@ class TestBlendLibLinkSaveLoadBasic(TestBlendLibLinkHelper):
link_dir = os.path.join(output_lib_path, "Collection")
bpy.ops.wm.link(directory=link_dir, filename="LibMesh", instance_collections=False)
- assert(len(bpy.data.meshes) == 1)
- assert(len(bpy.data.objects) == 1)
- assert(len(bpy.data.collections) == 1) # Scene's master collection is not listed here
+ assert len(bpy.data.meshes) == 1
+ assert len(bpy.data.objects) == 1
+ assert len(bpy.data.collections) == 1 # Scene's master collection is not listed here
# Linked collection should have been added to the scene's master collection children.
- assert(bpy.data.collections[0] in set(bpy.data.scenes[0].collection.children))
+ assert bpy.data.collections[0] in set(bpy.data.scenes[0].collection.children)
orig_data = self.blender_data_to_tuple(bpy.data, "orig_data")
@@ -185,7 +185,7 @@ class TestBlendLibLinkSaveLoadBasic(TestBlendLibLinkHelper):
read_data = self.blender_data_to_tuple(bpy.data, "read_data")
- assert(orig_data == read_data)
+ assert orig_data == read_data
class TestBlendLibAppendBasic(TestBlendLibLinkHelper):
@@ -211,15 +211,15 @@ class TestBlendLibAppendBasic(TestBlendLibLinkHelper):
bpy.data.materials[0].use_fake_user,
)
- assert(len(bpy.data.materials) == 1)
- assert(bpy.data.materials[0].library is not None)
- assert(bpy.data.materials[0].users == 2) # Fake user is not cleared when linking.
- assert(len(bpy.data.meshes) == 1)
- assert(bpy.data.meshes[0].library is None)
- assert(bpy.data.meshes[0].use_fake_user is False)
- assert(bpy.data.meshes[0].users == 0)
- assert(len(bpy.data.objects) == 0)
- assert(len(bpy.data.collections) == 0) # Scene's master collection is not listed here
+ assert len(bpy.data.materials) == 1
+ assert bpy.data.materials[0].library is not None
+ assert bpy.data.materials[0].users == 2 # Fake user is not cleared when linking.
+ assert len(bpy.data.meshes) == 1
+ assert bpy.data.meshes[0].library is None
+ assert bpy.data.meshes[0].use_fake_user is False
+ assert bpy.data.meshes[0].users == 0
+ assert len(bpy.data.objects) == 0
+ assert len(bpy.data.collections) == 0 # Scene's master collection is not listed here
# Simple append of a single ObData with obdata instantiation.
self.reset_blender()
@@ -228,16 +228,16 @@ class TestBlendLibAppendBasic(TestBlendLibLinkHelper):
bpy.ops.wm.append(directory=link_dir, filename="LibMesh",
instance_object_data=True, set_fake=False, use_recursive=False, do_reuse_local_id=False)
- assert(len(bpy.data.materials) == 1)
- assert(bpy.data.materials[0].library is not None)
- assert(bpy.data.materials[0].users == 2) # Fake user is not cleared when linking.
- assert(len(bpy.data.meshes) == 1)
- assert(bpy.data.meshes[0].library is None)
- assert(bpy.data.meshes[0].use_fake_user is False)
- assert(bpy.data.meshes[0].users == 1)
- assert(len(bpy.data.objects) == 1) # Instance created for the mesh ObData.
- assert(bpy.data.objects[0].library is None)
- assert(len(bpy.data.collections) == 0) # Scene's master collection is not listed here
+ assert len(bpy.data.materials) == 1
+ assert bpy.data.materials[0].library is not None
+ assert bpy.data.materials[0].users == 2 # Fake user is not cleared when linking.
+ assert len(bpy.data.meshes) == 1
+ assert bpy.data.meshes[0].library is None
+ assert bpy.data.meshes[0].use_fake_user is False
+ assert bpy.data.meshes[0].users == 1
+ assert len(bpy.data.objects) == 1 # Instance created for the mesh ObData.
+ assert bpy.data.objects[0].library is None
+ assert len(bpy.data.collections) == 0 # Scene's master collection is not listed here
# Simple append of a single ObData with fake user.
self.reset_blender()
@@ -246,15 +246,15 @@ class TestBlendLibAppendBasic(TestBlendLibLinkHelper):
bpy.ops.wm.append(directory=link_dir, filename="LibMesh",
instance_object_data=False, set_fake=True, use_recursive=False, do_reuse_local_id=False)
- assert(len(bpy.data.materials) == 1)
- assert(bpy.data.materials[0].library is not None)
- assert(bpy.data.materials[0].users == 2) # Fake user is not cleared when linking.
- assert(len(bpy.data.meshes) == 1)
- assert(bpy.data.meshes[0].library is None)
- assert(bpy.data.meshes[0].use_fake_user is True)
- assert(bpy.data.meshes[0].users == 1)
- assert(len(bpy.data.objects) == 0)
- assert(len(bpy.data.collections) == 0) # Scene's master collection is not listed here
+ assert len(bpy.data.materials) == 1
+ assert bpy.data.materials[0].library is not None
+ assert bpy.data.materials[0].users == 2 # Fake user is not cleared when linking.
+ assert len(bpy.data.meshes) == 1
+ assert bpy.data.meshes[0].library is None
+ assert bpy.data.meshes[0].use_fake_user is True
+ assert bpy.data.meshes[0].users == 1
+ assert len(bpy.data.objects) == 0
+ assert len(bpy.data.collections) == 0 # Scene's master collection is not listed here
# Simple append of a single Object.
self.reset_blender()
@@ -263,16 +263,16 @@ class TestBlendLibAppendBasic(TestBlendLibLinkHelper):
bpy.ops.wm.append(directory=link_dir, filename="LibMesh",
instance_object_data=False, set_fake=False, use_recursive=False, do_reuse_local_id=False)
- assert(len(bpy.data.materials) == 1)
- assert(bpy.data.materials[0].library is not None)
- assert(bpy.data.materials[0].users == 2) # Fake user is not cleared when linking.
- assert(len(bpy.data.meshes) == 1)
- assert(bpy.data.meshes[0].library is None)
- assert(bpy.data.meshes[0].users == 1)
- assert(len(bpy.data.objects) == 1)
- assert(bpy.data.objects[0].library is None)
- assert(bpy.data.objects[0].users == 1)
- assert(len(bpy.data.collections) == 0) # Scene's master collection is not listed here
+ assert len(bpy.data.materials) == 1
+ assert bpy.data.materials[0].library is not None
+ assert bpy.data.materials[0].users == 2 # Fake user is not cleared when linking.
+ assert len(bpy.data.meshes) == 1
+ assert bpy.data.meshes[0].library is None
+ assert bpy.data.meshes[0].users == 1
+ assert len(bpy.data.objects) == 1
+ assert bpy.data.objects[0].library is None
+ assert bpy.data.objects[0].users == 1
+ assert len(bpy.data.collections) == 0 # Scene's master collection is not listed here
# Simple recursive append of a single Object.
self.reset_blender()
@@ -281,16 +281,16 @@ class TestBlendLibAppendBasic(TestBlendLibLinkHelper):
bpy.ops.wm.append(directory=link_dir, filename="LibMesh",
instance_object_data=False, set_fake=False, use_recursive=True, do_reuse_local_id=False)
- assert(len(bpy.data.materials) == 1)
- assert(bpy.data.materials[0].library is None)
- assert(bpy.data.materials[0].users == 1) # Fake user is cleared when appending.
- assert(len(bpy.data.meshes) == 1)
- assert(bpy.data.meshes[0].library is None)
- assert(bpy.data.meshes[0].users == 1)
- assert(len(bpy.data.objects) == 1)
- assert(bpy.data.objects[0].library is None)
- assert(bpy.data.objects[0].users == 1)
- assert(len(bpy.data.collections) == 0) # Scene's master collection is not listed here
+ assert len(bpy.data.materials) == 1
+ assert bpy.data.materials[0].library is None
+ assert bpy.data.materials[0].users == 1 # Fake user is cleared when appending.
+ assert len(bpy.data.meshes) == 1
+ assert bpy.data.meshes[0].library is None
+ assert bpy.data.meshes[0].users == 1
+ assert len(bpy.data.objects) == 1
+ assert bpy.data.objects[0].library is None
+ assert bpy.data.objects[0].users == 1
+ assert len(bpy.data.collections) == 0 # Scene's master collection is not listed here
# Simple recursive append of a single Collection.
self.reset_blender()
@@ -299,17 +299,17 @@ class TestBlendLibAppendBasic(TestBlendLibLinkHelper):
bpy.ops.wm.append(directory=link_dir, filename="LibMesh",
instance_object_data=False, set_fake=False, use_recursive=True, do_reuse_local_id=False)
- assert(len(bpy.data.materials) == 1)
- assert(bpy.data.materials[0].library is None)
- assert(bpy.data.materials[0].users == 1) # Fake user is cleared when appending.
- assert(bpy.data.meshes[0].library is None)
- assert(bpy.data.meshes[0].users == 1)
- assert(len(bpy.data.objects) == 1)
- assert(bpy.data.objects[0].library is None)
- assert(bpy.data.objects[0].users == 1)
- assert(len(bpy.data.collections) == 1) # Scene's master collection is not listed here
- assert(bpy.data.collections[0].library is None)
- assert(bpy.data.collections[0].users == 1)
+ assert len(bpy.data.materials) == 1
+ assert bpy.data.materials[0].library is None
+ assert bpy.data.materials[0].users == 1 # Fake user is cleared when appending.
+ assert bpy.data.meshes[0].library is None
+ assert bpy.data.meshes[0].users == 1
+ assert len(bpy.data.objects) == 1
+ assert bpy.data.objects[0].library is None
+ assert bpy.data.objects[0].users == 1
+ assert len(bpy.data.collections) == 1 # Scene's master collection is not listed here
+ assert bpy.data.collections[0].library is None
+ assert bpy.data.collections[0].users == 1
class TestBlendLibAppendReuseID(TestBlendLibLinkHelper):
@@ -328,51 +328,51 @@ class TestBlendLibAppendReuseID(TestBlendLibLinkHelper):
bpy.ops.wm.append(directory=link_dir, filename="LibMesh",
instance_object_data=False, set_fake=False, use_recursive=True, do_reuse_local_id=False)
- assert(len(bpy.data.meshes) == 1)
- assert(bpy.data.meshes[0].library is None)
- assert(bpy.data.meshes[0].use_fake_user is False)
- assert(bpy.data.meshes[0].users == 1)
- assert(bpy.data.meshes[0].library_weak_reference is not None)
- assert(bpy.data.meshes[0].library_weak_reference.filepath == output_lib_path)
- assert(bpy.data.meshes[0].library_weak_reference.id_name == "MELibMesh")
- assert(len(bpy.data.objects) == 1)
+ assert len(bpy.data.meshes) == 1
+ assert bpy.data.meshes[0].library is None
+ assert bpy.data.meshes[0].use_fake_user is False
+ assert bpy.data.meshes[0].users == 1
+ assert bpy.data.meshes[0].library_weak_reference is not None
+ assert bpy.data.meshes[0].library_weak_reference.filepath == output_lib_path
+ assert bpy.data.meshes[0].library_weak_reference.id_name == "MELibMesh"
+ assert len(bpy.data.objects) == 1
for ob in bpy.data.objects:
- assert(ob.library is None)
- assert(ob.library_weak_reference is None)
- assert(len(bpy.data.collections) == 0) # Scene's master collection is not listed here
+ assert ob.library is None
+ assert ob.library_weak_reference is None
+ assert len(bpy.data.collections) == 0 # Scene's master collection is not listed here
bpy.ops.wm.append(directory=link_dir, filename="LibMesh",
instance_object_data=False, set_fake=False, use_recursive=True, do_reuse_local_id=True)
- assert(len(bpy.data.meshes) == 1)
- assert(bpy.data.meshes[0].library is None)
- assert(bpy.data.meshes[0].use_fake_user is False)
- assert(bpy.data.meshes[0].users == 2)
- assert(bpy.data.meshes[0].library_weak_reference is not None)
- assert(bpy.data.meshes[0].library_weak_reference.filepath == output_lib_path)
- assert(bpy.data.meshes[0].library_weak_reference.id_name == "MELibMesh")
- assert(len(bpy.data.objects) == 2)
+ assert len(bpy.data.meshes) == 1
+ assert bpy.data.meshes[0].library is None
+ assert bpy.data.meshes[0].use_fake_user is False
+ assert bpy.data.meshes[0].users == 2
+ assert bpy.data.meshes[0].library_weak_reference is not None
+ assert bpy.data.meshes[0].library_weak_reference.filepath == output_lib_path
+ assert bpy.data.meshes[0].library_weak_reference.id_name == "MELibMesh"
+ assert len(bpy.data.objects) == 2
for ob in bpy.data.objects:
- assert(ob.library is None)
- assert(ob.library_weak_reference is None)
- assert(len(bpy.data.collections) == 0) # Scene's master collection is not listed here
+ assert ob.library is None
+ assert ob.library_weak_reference is None
+ assert len(bpy.data.collections) == 0 # Scene's master collection is not listed here
bpy.ops.wm.append(directory=link_dir, filename="LibMesh",
instance_object_data=False, set_fake=False, use_recursive=True, do_reuse_local_id=False)
- assert(len(bpy.data.meshes) == 2)
- assert(bpy.data.meshes[0].library_weak_reference is None)
- assert(bpy.data.meshes[1].library is None)
- assert(bpy.data.meshes[1].use_fake_user is False)
- assert(bpy.data.meshes[1].users == 1)
- assert(bpy.data.meshes[1].library_weak_reference is not None)
- assert(bpy.data.meshes[1].library_weak_reference.filepath == output_lib_path)
- assert(bpy.data.meshes[1].library_weak_reference.id_name == "MELibMesh")
- assert(len(bpy.data.objects) == 3)
+ assert len(bpy.data.meshes) == 2
+ assert bpy.data.meshes[0].library_weak_reference is None
+ assert bpy.data.meshes[1].library is None
+ assert bpy.data.meshes[1].use_fake_user is False
+ assert bpy.data.meshes[1].users == 1
+ assert bpy.data.meshes[1].library_weak_reference is not None
+ assert bpy.data.meshes[1].library_weak_reference.filepath == output_lib_path
+ assert bpy.data.meshes[1].library_weak_reference.id_name == "MELibMesh"
+ assert len(bpy.data.objects) == 3
for ob in bpy.data.objects:
- assert(ob.library is None)
- assert(ob.library_weak_reference is None)
- assert(len(bpy.data.collections) == 0) # Scene's master collection is not listed here
+ assert ob.library is None
+ assert ob.library_weak_reference is None
+ assert len(bpy.data.collections) == 0 # Scene's master collection is not listed here
class TestBlendLibLibraryReload(TestBlendLibLinkHelper):
@@ -390,9 +390,9 @@ class TestBlendLibLibraryReload(TestBlendLibLinkHelper):
link_dir = os.path.join(output_lib_path, "Object")
bpy.ops.wm.link(directory=link_dir, filename="LibMesh")
- assert(len(bpy.data.meshes) == 1)
- assert(len(bpy.data.objects) == 1)
- assert(len(bpy.data.collections) == 0) # Scene's master collection is not listed here
+ assert len(bpy.data.meshes) == 1
+ assert len(bpy.data.objects) == 1
+ assert len(bpy.data.collections) == 0 # Scene's master collection is not listed here
orig_data = self.blender_data_to_tuple(bpy.data, "orig_data")
@@ -402,7 +402,7 @@ class TestBlendLibLibraryReload(TestBlendLibLinkHelper):
print(orig_data)
print(reload_data)
- assert(orig_data == reload_data)
+ assert orig_data == reload_data
class TestBlendLibLibraryRelocate(TestBlendLibLinkHelper):
@@ -420,9 +420,9 @@ class TestBlendLibLibraryRelocate(TestBlendLibLinkHelper):
link_dir = os.path.join(output_lib_path, "Object")
bpy.ops.wm.link(directory=link_dir, filename="LibMesh")
- assert(len(bpy.data.meshes) == 1)
- assert(len(bpy.data.objects) == 1)
- assert(len(bpy.data.collections) == 0) # Scene's master collection is not listed here
+ assert len(bpy.data.meshes) == 1
+ assert len(bpy.data.objects) == 1
+ assert len(bpy.data.collections) == 0 # Scene's master collection is not listed here
orig_data = self.blender_data_to_tuple(bpy.data, "orig_data")
@@ -436,7 +436,7 @@ class TestBlendLibLibraryRelocate(TestBlendLibLinkHelper):
print(orig_data)
print(relocate_data)
- assert(orig_data == relocate_data)
+ assert orig_data == relocate_data
class TestBlendLibDataLibrariesLoad(TestBlendLibLinkHelper):
@@ -454,21 +454,21 @@ class TestBlendLibDataLibrariesLoad(TestBlendLibLinkHelper):
with bpy.data.libraries.load(filepath=output_lib_path) as lib_ctx:
lib_src, lib_link = lib_ctx
- assert(len(lib_src.meshes) == 1)
- assert(len(lib_src.objects) == 1)
- assert(len(lib_src.collections) == 1)
+ assert len(lib_src.meshes) == 1
+ assert len(lib_src.objects) == 1
+ assert len(lib_src.collections) == 1
- assert(len(lib_link.meshes) == 0)
- assert(len(lib_link.objects) == 0)
- assert(len(lib_link.collections) == 0)
+ assert len(lib_link.meshes) == 0
+ assert len(lib_link.objects) == 0
+ assert len(lib_link.collections) == 0
lib_link.collections.append(lib_src.collections[0])
# Linking happens when living the context manager.
- assert(len(bpy.data.meshes) == 1)
- assert(len(bpy.data.objects) == 1) # This code does no instantiation.
- assert(len(bpy.data.collections) == 1)
+ assert len(bpy.data.meshes) == 1
+ assert len(bpy.data.objects) == 1 # This code does no instantiation.
+ assert len(bpy.data.collections) == 1
TESTS = (
diff --git a/tests/python/bl_blendfile_library_overrides.py b/tests/python/bl_blendfile_library_overrides.py
index 3ba99bd61e4..6890bb1e660 100644
--- a/tests/python/bl_blendfile_library_overrides.py
+++ b/tests/python/bl_blendfile_library_overrides.py
@@ -57,49 +57,49 @@ class TestLibraryOverrides(TestHelper, unittest.TestCase):
local_id = obj.override_create()
self.assertIsNotNone(local_id.override_library)
self.assertIsNone(local_id.data.override_library)
- assert(len(local_id.override_library.properties) == 0)
+ assert len(local_id.override_library.properties) == 0
# #### Generate an override property & operation automatically by editing the local override data.
local_id.location.y = 1.0
local_id.override_library.operations_update()
- assert(len(local_id.override_library.properties) == 1)
+ assert len(local_id.override_library.properties) == 1
override_prop = local_id.override_library.properties[0]
- assert(override_prop.rna_path == "location")
- assert(len(override_prop.operations) == 1)
+ assert override_prop.rna_path == "location"
+ assert len(override_prop.operations) == 1
override_operation = override_prop.operations[0]
- assert(override_operation.operation == 'REPLACE')
+ assert override_operation.operation == 'REPLACE'
# Setting location.y overrode all elements in the location array. -1 is a wildcard.
- assert(override_operation.subitem_local_index == -1)
+ assert override_operation.subitem_local_index == -1
# #### Reset the override to its linked reference data.
local_id.override_library.reset()
- assert(len(local_id.override_library.properties) == 0)
- assert(local_id.location == local_id.override_library.reference.location)
+ assert len(local_id.override_library.properties) == 0
+ assert local_id.location == local_id.override_library.reference.location
# #### Generate an override property & operation manually using the API.
override_property = local_id.override_library.properties.add(rna_path="location")
override_property.operations.add(operation='REPLACE')
- assert(len(local_id.override_library.properties) == 1)
+ assert len(local_id.override_library.properties) == 1
override_prop = local_id.override_library.properties[0]
- assert(override_prop.rna_path == "location")
- assert(len(override_prop.operations) == 1)
+ assert override_prop.rna_path == "location"
+ assert len(override_prop.operations) == 1
override_operation = override_prop.operations[0]
- assert(override_operation.operation == 'REPLACE')
+ assert override_operation.operation == 'REPLACE'
# Setting location.y overrode all elements in the location array. -1 is a wildcard.
- assert(override_operation.subitem_local_index == -1)
+ assert override_operation.subitem_local_index == -1
override_property = local_id.override_library.properties[0]
override_property.operations.remove(override_property.operations[0])
local_id.override_library.properties.remove(override_property)
- assert(len(local_id.override_library.properties) == 0)
+ assert len(local_id.override_library.properties) == 0
# #### Delete the override.
local_id_name = local_id.name
- assert(bpy.data.objects.get((local_id_name, None), None) == local_id)
+ assert bpy.data.objects.get((local_id_name, None), None) == local_id
local_id.override_library.destroy()
- assert(bpy.data.objects.get((local_id_name, None), None) is None)
+ assert bpy.data.objects.get((local_id_name, None), None) is None
def test_link_permissive(self):
"""
@@ -119,39 +119,39 @@ class TestLibraryOverrides(TestHelper, unittest.TestCase):
local_id = obj.override_create()
self.assertIsNotNone(local_id.override_library)
self.assertIsNone(local_id.data.override_library)
- assert(len(local_id.override_library.properties) == 1)
+ assert len(local_id.override_library.properties) == 1
override_prop = local_id.override_library.properties[0]
- assert(override_prop.rna_path == "scale")
- assert(len(override_prop.operations) == 1)
+ assert override_prop.rna_path == "scale"
+ assert len(override_prop.operations) == 1
override_operation = override_prop.operations[0]
- assert(override_operation.operation == 'NOOP')
- assert(override_operation.subitem_local_index == -1)
+ assert override_operation.operation == 'NOOP'
+ assert override_operation.subitem_local_index == -1
local_id.location.y = 1.0
local_id.scale.x = 0.5
# `scale.x` will apply, but will be reverted when the library overrides
# are updated. This is by design so python scripts can still alter the
# properties locally what is a typical usecase in productions.
- assert(local_id.scale.x == 0.5)
- assert(local_id.location.y == 1.0)
+ assert local_id.scale.x == 0.5
+ assert local_id.location.y == 1.0
local_id.override_library.operations_update()
- assert(local_id.scale.x == 1.0)
- assert(local_id.location.y == 1.0)
+ assert local_id.scale.x == 1.0
+ assert local_id.location.y == 1.0
- assert(len(local_id.override_library.properties) == 2)
+ assert len(local_id.override_library.properties) == 2
override_prop = local_id.override_library.properties[0]
- assert(override_prop.rna_path == "scale")
- assert(len(override_prop.operations) == 1)
+ assert override_prop.rna_path == "scale"
+ assert len(override_prop.operations) == 1
override_operation = override_prop.operations[0]
- assert(override_operation.operation == 'NOOP')
- assert(override_operation.subitem_local_index == -1)
+ assert override_operation.operation == 'NOOP'
+ assert override_operation.subitem_local_index == -1
override_prop = local_id.override_library.properties[1]
- assert(override_prop.rna_path == "location")
- assert(len(override_prop.operations) == 1)
+ assert override_prop.rna_path == "location"
+ assert len(override_prop.operations) == 1
override_operation = override_prop.operations[0]
- assert(override_operation.operation == 'REPLACE')
- assert (override_operation.subitem_local_index == -1)
+ assert override_operation.operation == 'REPLACE'
+ assert override_operation.subitem_local_index == -1
class TestLibraryTemplate(TestHelper, unittest.TestCase):
@@ -169,16 +169,16 @@ class TestLibraryTemplate(TestHelper, unittest.TestCase):
mesh = bpy.data.meshes.new(TestLibraryTemplate.MESH_LIBRARY_PERMISSIVE)
obj = bpy.data.objects.new(TestLibraryTemplate.OBJECT_LIBRARY_PERMISSIVE, object_data=mesh)
bpy.context.collection.objects.link(obj)
- assert(obj.override_library is None)
+ assert obj.override_library is None
obj.override_template_create()
- assert(obj.override_library is not None)
- assert(len(obj.override_library.properties) == 0)
+ assert obj.override_library is not None
+ assert len(obj.override_library.properties) == 0
prop = obj.override_library.properties.add(rna_path='scale')
- assert(len(obj.override_library.properties) == 1)
- assert(len(prop.operations) == 0)
+ assert len(obj.override_library.properties) == 1
+ assert len(prop.operations) == 0
operation = prop.operations.add(operation='NOOP')
- assert(len(prop.operations) == 1)
- assert(operation.operation == 'NOOP')
+ assert len(prop.operations) == 1
+ assert operation.operation == 'NOOP'
class TestLibraryOverridesResync(TestHelper, unittest.TestCase):
@@ -237,30 +237,30 @@ class TestLibraryOverridesResync(TestHelper, unittest.TestCase):
)
linked_collection_container = bpy.data.collections[TestLibraryOverridesResync.DATA_NAME_CONTAINER]
- assert(linked_collection_container.library is not None)
- assert(linked_collection_container.override_library is None)
- assert(len(bpy.data.collections) == 2)
- assert(all(id_.library is not None for id_ in bpy.data.collections))
- assert(len(bpy.data.objects) == 4)
- assert(all(id_.library is not None for id_ in bpy.data.objects))
- assert(len(bpy.data.meshes) == 1)
- assert(all(id_.library is not None for id_ in bpy.data.meshes))
- assert(len(bpy.data.armatures) == 1)
- assert(all(id_.library is not None for id_ in bpy.data.armatures))
+ assert linked_collection_container.library is not None
+ assert linked_collection_container.override_library is None
+ assert len(bpy.data.collections) == 2
+ assert all(id_.library is not None for id_ in bpy.data.collections)
+ assert len(bpy.data.objects) == 4
+ assert all(id_.library is not None for id_ in bpy.data.objects)
+ assert len(bpy.data.meshes) == 1
+ assert all(id_.library is not None for id_ in bpy.data.meshes)
+ assert len(bpy.data.armatures) == 1
+ assert all(id_.library is not None for id_ in bpy.data.armatures)
override_collection_container = linked_collection_container.override_hierarchy_create(
bpy.context.scene,
bpy.context.view_layer,
)
- assert(override_collection_container.library is None)
- assert(override_collection_container.override_library is not None)
+ assert override_collection_container.library is None
+ assert override_collection_container.override_library is not None
# Objects and collections are duplicated as overrides, but meshes and armatures remain only linked data.
- assert(len(bpy.data.collections) == 4)
- assert(all((id_.library is None and id_.override_library is not None) for id_ in bpy.data.collections[:2]))
- assert(len(bpy.data.objects) == 8)
- assert(all((id_.library is None and id_.override_library is not None) for id_ in bpy.data.objects[:4]))
- assert(len(bpy.data.meshes) == 1)
- assert(len(bpy.data.armatures) == 1)
+ assert len(bpy.data.collections) == 4
+ assert all((id_.library is None and id_.override_library is not None) for id_ in bpy.data.collections[:2])
+ assert len(bpy.data.objects) == 8
+ assert all((id_.library is None and id_.override_library is not None) for id_ in bpy.data.objects[:4])
+ assert len(bpy.data.meshes) == 1
+ assert len(bpy.data.armatures) == 1
bpy.ops.wm.save_as_mainfile(filepath=str(self.test_output_path), check_existing=False, compress=False)
@@ -279,21 +279,21 @@ class TestLibraryOverridesResync(TestHelper, unittest.TestCase):
bpy.ops.wm.open_mainfile(filepath=str(self.test_output_path))
override_collection_container = bpy.data.collections[TestLibraryOverridesResync.DATA_NAME_CONTAINER]
- assert(override_collection_container.library is None)
- assert(override_collection_container.override_library is not None)
+ assert override_collection_container.library is None
+ assert override_collection_container.override_library is not None
# Objects and collections are duplicated as overrides, but meshes and armatures remain only linked data.
- assert(len(bpy.data.collections) == 4)
- assert(all((id_.library is None and id_.override_library is not None) for id_ in bpy.data.collections[:2]))
- assert(len(bpy.data.objects) == 8)
- assert(all((id_.library is None and id_.override_library is not None) for id_ in bpy.data.objects[:4]))
- assert(len(bpy.data.meshes) == 1)
- assert(len(bpy.data.armatures) == 1)
+ assert len(bpy.data.collections) == 4
+ assert all((id_.library is None and id_.override_library is not None) for id_ in bpy.data.collections[:2])
+ assert len(bpy.data.objects) == 8
+ assert all((id_.library is None and id_.override_library is not None) for id_ in bpy.data.objects[:4])
+ assert len(bpy.data.meshes) == 1
+ assert len(bpy.data.armatures) == 1
obj_armature = bpy.data.objects[TestLibraryOverridesResync.DATA_NAME_RIG]
obj_ctrl2 = bpy.data.objects[TestLibraryOverridesResync.DATA_NAME_CONTROLLER_2]
- assert(obj_armature.library is None and obj_armature.override_library is not None)
- assert(obj_ctrl2.library is None and obj_ctrl2.override_library is not None)
- assert(obj_armature.constraints[0].target == obj_ctrl2)
+ assert obj_armature.library is None and obj_armature.override_library is not None
+ assert obj_ctrl2.library is None and obj_ctrl2.override_library is not None
+ assert obj_armature.constraints[0].target == obj_ctrl2
TESTS = (
diff --git a/tests/python/bl_keymap_validate.py b/tests/python/bl_keymap_validate.py
index 83d41c8a9f6..11da4d562b0 100644
--- a/tests/python/bl_keymap_validate.py
+++ b/tests/python/bl_keymap_validate.py
@@ -228,7 +228,7 @@ def keyconfig_activate_and_extract_data(
bpy.ops.preferences.keyconfig_activate(filepath=filepath)
# If called multiple times, something strange is happening.
- assert(len(args_collected) == 1)
+ assert len(args_collected) == 1
args, _kw = args_collected[0]
# Ignore the type check as `temp_fn_argument_extractor` is a generic function
# which doesn't contain type information of the function being wrapped.
diff --git a/tests/python/bl_load_addons.py b/tests/python/bl_load_addons.py
index b94c56541af..b67bc22102c 100644
--- a/tests/python/bl_load_addons.py
+++ b/tests/python/bl_load_addons.py
@@ -57,7 +57,7 @@ def disable_addons():
addons = bpy.context.preferences.addons
for mod_name in list(addons.keys()):
addon_utils.disable(mod_name, default_set=True)
- assert(bool(addons) is False)
+ assert bool(addons) is False
def test_load_addons():
@@ -97,13 +97,13 @@ def reload_addons(do_reload=True, do_reverse=True):
mod_name = mod.__name__
print("\tenabling:", mod_name)
addon_utils.enable(mod_name, default_set=True)
- assert(mod_name in addons)
+ assert mod_name in addons
for mod in modules:
mod_name = mod.__name__
print("\tdisabling:", mod_name)
addon_utils.disable(mod_name, default_set=True)
- assert(not (mod_name in addons))
+ assert not (mod_name in addons)
# now test reloading
if do_reload:
diff --git a/tests/python/bl_load_py_modules.py b/tests/python/bl_load_py_modules.py
index 7ad5895ce86..784d8984935 100644
--- a/tests/python/bl_load_py_modules.py
+++ b/tests/python/bl_load_py_modules.py
@@ -161,7 +161,7 @@ def load_modules():
sys.path[:] = sys_path_back
# check we load what we ask for.
- assert(os.path.samefile(mod_imp.__file__, submod_full))
+ assert os.path.samefile(mod_imp.__file__, submod_full)
modules.append(mod_imp)
except Exception:
diff --git a/tests/python/bl_mesh_modifiers.py b/tests/python/bl_mesh_modifiers.py
index 640cf1c30f2..5498316b267 100644
--- a/tests/python/bl_mesh_modifiers.py
+++ b/tests/python/bl_mesh_modifiers.py
@@ -55,8 +55,8 @@ def render_gl(context, filepath, shade):
def render_gl_all_modes(context, obj, filepath=""):
- assert(obj is not None)
- assert(filepath != "")
+ assert obj is not None
+ assert filepath != ""
scene = context.scene
@@ -91,7 +91,7 @@ def render_gl_all_modes(context, obj, filepath=""):
render_gl(context, filepath + "_wp_wire", shade='WIREFRAME')
- assert(1)
+ assert 1
bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
diff --git a/tests/python/bl_pyapi_idprop.py b/tests/python/bl_pyapi_idprop.py
index ddb5be03594..ddce132dd5a 100644
--- a/tests/python/bl_pyapi_idprop.py
+++ b/tests/python/bl_pyapi_idprop.py
@@ -22,7 +22,7 @@ class TestHelper:
def setUp(self):
self._id = bpy.context.scene
self._id.pop("cycles", None)
- assert(len(self._id.keys()) == 0)
+ assert len(self._id.keys()) == 0
def tearDown(self):
for key in list(self._id.keys()):
diff --git a/tests/python/bl_rna_manual_reference.py b/tests/python/bl_rna_manual_reference.py
index 257c8b7601a..958cc46ae29 100644
--- a/tests/python/bl_rna_manual_reference.py
+++ b/tests/python/bl_rna_manual_reference.py
@@ -15,12 +15,12 @@ import bpy
def test_data():
import rna_manual_reference
- assert(isinstance(rna_manual_reference.url_manual_mapping, tuple))
+ assert isinstance(rna_manual_reference.url_manual_mapping, tuple)
for i, value in enumerate(rna_manual_reference.url_manual_mapping):
try:
- assert(len(value) == 2)
- assert(isinstance(value[0], str))
- assert(isinstance(value[1], str))
+ assert len(value) == 2
+ assert isinstance(value[0], str)
+ assert isinstance(value[1], str)
except:
print("Expected a tuple of 2 strings, instead item %d is a %s: %r" % (i, type(value), value))
import traceback
diff --git a/tests/python/bl_run_operators_event_simulate.py b/tests/python/bl_run_operators_event_simulate.py
index d218e6b1bc0..e17eaef0480 100644
--- a/tests/python/bl_run_operators_event_simulate.py
+++ b/tests/python/bl_run_operators_event_simulate.py
@@ -461,7 +461,7 @@ class BlenderAction(argparse.Action):
except ArgumentTypeError as ex:
raise ArgumentTypeError("Invalid 'action' arguments \"%s\" at index %d, %s" % (value, index, str(ex)))
# Validation should never yield any events.
- assert(not dummy_result)
+ assert not dummy_result
return (op, args, kwargs)
diff --git a/tests/python/collada/CMakeLists.txt b/tests/python/collada/CMakeLists.txt
index ecc092250c9..27388337de6 100644
--- a/tests/python/collada/CMakeLists.txt
+++ b/tests/python/collada/CMakeLists.txt
@@ -47,5 +47,5 @@ endmacro()
# Tests are disabled because they only work on Windows
# Tests will be redone completely to work reliable
#
-# COLLADA_TEST(mesh simple mesh_simple.blend)
-# COLLADA_TEST(animation simple suzannes_parent_inverse.blend)
+# collada_test(mesh simple mesh_simple.blend)
+# collada_test(animation simple suzannes_parent_inverse.blend)
diff --git a/tests/python/modifiers.py b/tests/python/modifiers.py
index 11d696c3bed..93448841dfd 100644
--- a/tests/python/modifiers.py
+++ b/tests/python/modifiers.py
@@ -16,10 +16,12 @@ seed(0)
def get_generate_modifiers_list(test_object_name, randomize=False):
"""
Construct a list of 'Generate' modifiers with default parameters.
- :param test_object_name: str - name of test object. Some modifiers like boolean need an extra parameter beside
- the default one. E.g. boolean needs object, mask needs vertex group etc...
- The extra parameter name will be <test_object_name>_<modifier_type>
- :param randomize: bool - if True shuffle the list of modifiers.
+ :arg test_object_name: Name of test object. Some modifiers like boolean need an extra parameter beside
+ the default one. E.g. boolean needs object, mask needs vertex group etc...
+ The extra parameter name will be <test_object_name>_<modifier_type>
+ :type test_object_name: str
+ :arg randomize: If True shuffle the list of modifiers.
+ :type randomize: bool
:return: list of 'Generate' modifiers with default parameters.
"""
diff --git a/tests/python/modules/mesh_test.py b/tests/python/modules/mesh_test.py
index 5b01bfeee94..b698540c367 100644
--- a/tests/python/modules/mesh_test.py
+++ b/tests/python/modules/mesh_test.py
@@ -43,10 +43,10 @@ class ModifierSpec:
def __init__(self, modifier_name: str, modifier_type: str, modifier_parameters: dict, frame_end=0):
"""
Constructs a modifier spec.
- :param modifier_name: str - name of object modifier, e.g. "myFirstSubsurfModif"
- :param modifier_type: str - type of object modifier, e.g. "SUBSURF"
- :param modifier_parameters: dict - {name : val} dictionary giving modifier parameters, e.g. {"quality" : 4}
- :param frame_end: int - frame at which simulation needs to be baked or modifier needs to be applied.
+ :arg modifier_name: str - name of object modifier, e.g. "myFirstSubsurfModif"
+ :arg modifier_type: str - type of object modifier, e.g. "SUBSURF"
+ :arg modifier_parameters: dict - {name : val} dictionary giving modifier parameters, e.g. {"quality" : 4}
+ :arg frame_end: int - frame at which simulation needs to be baked or modifier needs to be applied.
"""
self.modifier_name = modifier_name
self.modifier_type = modifier_type
@@ -66,10 +66,10 @@ class ParticleSystemSpec:
def __init__(self, modifier_name: str, modifier_type: str, modifier_parameters: dict, frame_end: int):
"""
Constructs a particle system spec.
- :param modifier_name: str - name of object modifier, e.g. "Particles"
- :param modifier_type: str - type of object modifier, e.g. "PARTICLE_SYSTEM"
- :param modifier_parameters: dict - {name : val} dictionary giving modifier parameters, e.g. {"seed" : 1}
- :param frame_end: int - the last frame of the simulation at which the modifier is applied
+ :arg modifier_name: str - name of object modifier, e.g. "Particles"
+ :arg modifier_type: str - type of object modifier, e.g. "PARTICLE_SYSTEM"
+ :arg modifier_parameters: dict - {name : val} dictionary giving modifier parameters, e.g. {"seed" : 1}
+ :arg frame_end: int - the last frame of the simulation at which the modifier is applied
"""
self.modifier_name = modifier_name
self.modifier_type = modifier_type
@@ -97,11 +97,11 @@ class OperatorSpecEditMode:
):
"""
Constructs an OperatorSpecEditMode. Raises ValueError if selec_mode is invalid.
- :param operator_name: str - name of mesh operator from bpy.ops.mesh, e.g. "bevel" or "fill"
- :param operator_parameters: dict - {name : val} dictionary containing operator parameters.
- :param select_mode: str - mesh selection mode, must be either 'VERT', 'EDGE' or 'FACE'
- :param selection: sequence - vertices/edges/faces indices to select, e.g. [0, 9, 10].
- :param: select_history: bool - load selection into bmesh selection history.
+ :arg operator_name: str - name of mesh operator from bpy.ops.mesh, e.g. "bevel" or "fill"
+ :arg operator_parameters: dict - {name : val} dictionary containing operator parameters.
+ :arg select_mode: str - mesh selection mode, must be either 'VERT', 'EDGE' or 'FACE'
+ :arg selection: sequence - vertices/edges/faces indices to select, e.g. [0, 9, 10].
+ :arg: select_history: bool - load selection into bmesh selection history.
"""
self.operator_name = operator_name
self.operator_parameters = operator_parameters
@@ -125,8 +125,8 @@ class OperatorSpecObjectMode:
def __init__(self, operator_name: str, operator_parameters: dict):
"""
- :param operator_name: str - name of the object operator from bpy.ops.object, e.g. "shade_smooth" or "shape_keys"
- :param operator_parameters: dict - contains operator parameters.
+ :arg operator_name: str - name of the object operator from bpy.ops.object, e.g. "shade_smooth" or "shape_keys"
+ :arg operator_parameters: dict - contains operator parameters.
"""
self.operator_name = operator_name
self.operator_parameters = operator_parameters
@@ -144,9 +144,9 @@ class DeformModifierSpec:
def __init__(self, frame_number: int, modifier_list: list, object_operator_spec: OperatorSpecObjectMode = None):
"""
Constructs a Deform Modifier spec (for user input)
- :param frame_number: int - the frame at which animated keyframe is inserted
- :param modifier_list: ModifierSpec - contains modifiers
- :param object_operator_spec: OperatorSpecObjectMode - contains object operators
+ :arg frame_number: int - the frame at which animated keyframe is inserted
+ :arg modifier_list: ModifierSpec - contains modifiers
+ :arg object_operator_spec: OperatorSpecObjectMode - contains object operators
"""
self.frame_number = frame_number
self.modifier_list = modifier_list
@@ -163,12 +163,12 @@ class MeshTest(ABC):
def __init__(self, test_object_name, exp_object_name, test_name=None, threshold=None, do_compare=True):
"""
- :param test_object_name: str - Name of object of mesh type to run the operations on.
- :param exp_object_name: str - Name of object of mesh type that has the expected
+ :arg test_object_name: str - Name of object of mesh type to run the operations on.
+ :arg exp_object_name: str - Name of object of mesh type that has the expected
geometry after running the operations.
- :param test_name: str - Name of the test.
- :param threshold: exponent: To allow variations and accept difference to a certain degree.
- :param do_compare: bool - True if we want to compare the test and expected objects, False otherwise.
+ :arg test_name: str - Name of the test.
+ :arg threshold: exponent: To allow variations and accept difference to a certain degree.
+ :arg do_compare: bool - True if we want to compare the test and expected objects, False otherwise.
"""
self.test_object_name = test_object_name
self.exp_object_name = exp_object_name
@@ -302,10 +302,10 @@ class MeshTest(ABC):
def do_selection(self, mesh: bpy.types.Mesh, select_mode: str, selection, select_history: bool):
"""
Do selection on a mesh.
- :param mesh: bpy.types.Mesh - input mesh
- :param: select_mode: str - selection mode. Must be 'VERT', 'EDGE' or 'FACE'
- :param: selection: sequence - indices of selection.
- :param: select_history: bool - load selection into bmesh selection history
+ :arg mesh: bpy.types.Mesh - input mesh
+ :arg: select_mode: str - selection mode. Must be 'VERT', 'EDGE' or 'FACE'
+ :arg: selection: sequence - indices of selection.
+ :arg: select_history: bool - load selection into bmesh selection history
Example: select_mode='VERT' and selection={1,2,3} selects veritces 1, 2 and 3 of input mesh
"""
@@ -366,9 +366,9 @@ class MeshTest(ABC):
def compare_meshes(evaluated_object, expected_object, threshold):
"""
Compares evaluated object mesh with expected object mesh.
- :param evaluated_object: first object for comparison.
- :param expected_object: second object for comparison.
- :param threshold: exponent: To allow variations and accept difference to a certain degree.
+ :arg evaluated_object: first object for comparison.
+ :arg expected_object: second object for comparison.
+ :arg threshold: exponent: To allow variations and accept difference to a certain degree.
:return: dict: Contains results of different comparisons.
"""
objects = bpy.data.objects
@@ -439,14 +439,14 @@ class SpecMeshTest(MeshTest):
"""
Constructor for SpecMeshTest.
- :param test_name: str - Name of the test.
- :param test_object_name: str - Name of object of mesh type to run the operations on.
- :param exp_object_name: str - Name of object of mesh type that has the expected
- geometry after running the operations.
- :param operations_stack: list - stack holding operations to perform on the test_object.
- :param apply_modifier: bool - True if we want to apply the modifiers right after adding them to the object.
- - True if we want to apply the modifier to list of modifiers, after some operation.
- This affects operations of type ModifierSpec and DeformModifierSpec.
+ :arg test_name: str - Name of the test.
+ :arg test_object_name: str - Name of object of mesh type to run the operations on.
+ :arg exp_object_name: str - Name of object of mesh type that has the expected
+ geometry after running the operations.
+ :arg operations_stack: list - stack holding operations to perform on the test_object.
+ :arg apply_modifier: bool - True if we want to apply the modifiers right after adding them to the object.
+ - True if we want to apply the modifier to list of modifiers, after some operation.
+ This affects operations of type ModifierSpec and DeformModifierSpec.
"""
super().__init__(test_object_name, exp_object_name, test_name, threshold)
@@ -491,9 +491,9 @@ class SpecMeshTest(MeshTest):
def _set_parameters_impl(self, modifier, modifier_parameters, nested_settings_path, modifier_name):
"""
Doing a depth first traversal of the modifier parameters and setting their values.
- :param: modifier: Of type modifier, its altered to become a setting in recursion.
- :param: modifier_parameters : dict or sequence, a simple/nested dictionary of modifier parameters.
- :param: nested_settings_path : list(stack): helps in tracing path to each node.
+ :arg: modifier: Of type modifier, its altered to become a setting in recursion.
+ :arg: modifier_parameters : dict or sequence, a simple/nested dictionary of modifier parameters.
+ :arg: nested_settings_path : list(stack): helps in tracing path to each node.
"""
if not isinstance(modifier_parameters, dict):
param_setting = None
@@ -540,8 +540,8 @@ class SpecMeshTest(MeshTest):
def _add_modifier(self, test_object, modifier_spec: ModifierSpec):
"""
Add modifier to object.
- :param test_object: bpy.types.Object - Blender object to apply modifier on.
- :param modifier_spec: ModifierSpec - ModifierSpec object with parameters
+ :arg test_object: bpy.types.Object - Blender object to apply modifier on.
+ :arg modifier_spec: ModifierSpec - ModifierSpec object with parameters
"""
bakers_list = ['CLOTH', 'SOFT_BODY', 'DYNAMIC_PAINT', 'FLUID']
scene = bpy.context.scene
@@ -645,8 +645,8 @@ class SpecMeshTest(MeshTest):
def _apply_operator_edit_mode(self, test_object, operator: OperatorSpecEditMode):
"""
Apply operator on test object.
- :param test_object: bpy.types.Object - Blender object to apply operator on.
- :param operator: OperatorSpecEditMode - OperatorSpecEditMode object with parameters.
+ :arg test_object: bpy.types.Object - Blender object to apply operator on.
+ :arg operator: OperatorSpecEditMode - OperatorSpecEditMode object with parameters.
"""
self.do_selection(
test_object.data,
@@ -695,7 +695,7 @@ class SpecMeshTest(MeshTest):
def _apply_deform_modifier(self, test_object, operation: list):
"""
- param: operation: list: List of modifiers or combination of modifier and object operator.
+ arg: operation: list: List of modifiers or combination of modifier and object operator.
"""
scene = bpy.context.scene
@@ -761,7 +761,7 @@ class RunTest:
def __init__(self, tests, apply_modifiers=False, do_compare=False):
"""
Construct a test suite.
- :param tests: list - list of modifier or operator test cases. Each element in the list must contain the
+ :arg tests: list - list of modifier or operator test cases. Each element in the list must contain the
following
in the correct order:
0) test_name: str - unique test name
@@ -825,7 +825,7 @@ class RunTest:
def run_test(self, test_name: str):
"""
Run a single test from self.tests list
- :param test_name: int - name of test
+ :arg test_name: int - name of test
:return: bool - True if test passed, False otherwise.
"""
case = None
diff --git a/tests/python/modules/test_utils.py b/tests/python/modules/test_utils.py
index 6aba3a75263..60c0c668835 100755
--- a/tests/python/modules/test_utils.py
+++ b/tests/python/modules/test_utils.py
@@ -46,8 +46,8 @@ class AbstractBlenderRunnerTest(unittest.TestCase):
Returns Blender's stdout + stderr combined into one string.
- :param filepath: taken relative to self.testdir.
- :param timeout: in seconds
+ :arg filepath: taken relative to self.testdir.
+ :arg timeout: in seconds
"""
assert self.blender, "Path to Blender binary is to be set in setUpClass()"
diff --git a/tests/python/view_layer/CMakeLists.txt b/tests/python/view_layer/CMakeLists.txt
index 56dc1c8b5e9..8052d375d23 100644
--- a/tests/python/view_layer/CMakeLists.txt
+++ b/tests/python/view_layer/CMakeLists.txt
@@ -20,7 +20,7 @@ set(TEST_BLENDER_EXE $<TARGET_FILE:blender> --background -noaudio --factory-star
# ------------------------------------------------------------------------------
-macro(VIEW_LAYER_TEST test_name)
+macro(view_layer_test test_name)
# Adds ${CMAKE_CURRENT_LIST_DIR} to sys.path so that the tests can import
# things from view_layer_common.py
add_test(view_layer_${test_name} ${TEST_BLENDER_EXE}
@@ -31,129 +31,129 @@ macro(VIEW_LAYER_TEST test_name)
)
endmacro()
-VIEW_LAYER_TEST(active_collection)
-VIEW_LAYER_TEST(background_set)
-VIEW_LAYER_TEST(collection_new_sync)
-VIEW_LAYER_TEST(collection_rename_a)
-VIEW_LAYER_TEST(collection_rename_b)
-# VIEW_LAYER_TEST(evaluation_render_settings_a)
-# VIEW_LAYER_TEST(evaluation_render_settings_b)
-# VIEW_LAYER_TEST(evaluation_render_settings_c)
-# VIEW_LAYER_TEST(evaluation_render_settings_d)
-# VIEW_LAYER_TEST(evaluation_render_settings_e)
-# VIEW_LAYER_TEST(evaluation_render_settings_f)
-# VIEW_LAYER_TEST(evaluation_render_settings_g)
-# VIEW_LAYER_TEST(evaluation_render_settings_h)
-# VIEW_LAYER_TEST(evaluation_render_settings_i)
-VIEW_LAYER_TEST(evaluation_visibility_a)
-VIEW_LAYER_TEST(evaluation_visibility_b)
-VIEW_LAYER_TEST(evaluation_visibility_c)
-VIEW_LAYER_TEST(evaluation_visibility_d)
-VIEW_LAYER_TEST(evaluation_visibility_e)
-VIEW_LAYER_TEST(evaluation_visibility_f)
-VIEW_LAYER_TEST(evaluation_visibility_g)
-VIEW_LAYER_TEST(evaluation_visibility_h)
-VIEW_LAYER_TEST(evaluation_visibility_i)
-VIEW_LAYER_TEST(evaluation_visibility_j)
-VIEW_LAYER_TEST(evaluation_selectability_a)
-VIEW_LAYER_TEST(evaluation_selectability_b)
-VIEW_LAYER_TEST(evaluation_selectability_c)
-VIEW_LAYER_TEST(evaluation_selectability_d)
-VIEW_LAYER_TEST(evaluation_selectability_e)
-VIEW_LAYER_TEST(evaluation_selectability_f)
-VIEW_LAYER_TEST(group_a)
-VIEW_LAYER_TEST(group_b)
-VIEW_LAYER_TEST(group_c)
-VIEW_LAYER_TEST(group_d)
-VIEW_LAYER_TEST(group_e)
-VIEW_LAYER_TEST(object_add_cylinder)
-VIEW_LAYER_TEST(object_add_empty)
-VIEW_LAYER_TEST(object_add_torus)
-VIEW_LAYER_TEST(object_add_no_collection_cylinder)
-VIEW_LAYER_TEST(object_add_no_collection_empty)
-VIEW_LAYER_TEST(object_add_no_collection_torus)
-VIEW_LAYER_TEST(object_copy)
-VIEW_LAYER_TEST(object_delete_a)
-VIEW_LAYER_TEST(object_delete_b)
-VIEW_LAYER_TEST(object_link_a)
-VIEW_LAYER_TEST(object_link_b)
-VIEW_LAYER_TEST(object_link_c)
-VIEW_LAYER_TEST(operator_context)
-VIEW_LAYER_TEST(make_single_user)
-VIEW_LAYER_TEST(move_above_below_scene_collection_a)
-VIEW_LAYER_TEST(move_above_below_scene_collection_b)
-VIEW_LAYER_TEST(move_above_below_scene_collection_c)
-VIEW_LAYER_TEST(move_above_below_scene_collection_d)
-VIEW_LAYER_TEST(move_above_below_scene_collection_e)
-VIEW_LAYER_TEST(move_above_below_scene_collection_f)
-VIEW_LAYER_TEST(move_above_below_scene_collection_g)
-VIEW_LAYER_TEST(move_above_below_scene_collection_h)
-VIEW_LAYER_TEST(move_above_below_scene_collection_i)
-VIEW_LAYER_TEST(move_above_below_scene_collection_sync_a)
-VIEW_LAYER_TEST(move_above_below_scene_collection_sync_b)
-VIEW_LAYER_TEST(move_above_below_scene_collection_sync_c)
-VIEW_LAYER_TEST(move_above_below_scene_collection_sync_d)
-VIEW_LAYER_TEST(move_above_below_scene_collection_sync_e)
-VIEW_LAYER_TEST(move_above_below_scene_collection_sync_f)
-VIEW_LAYER_TEST(move_above_below_scene_collection_sync_g)
-VIEW_LAYER_TEST(move_above_below_scene_collection_sync_h)
-VIEW_LAYER_TEST(move_above_below_scene_collection_sync_i)
-VIEW_LAYER_TEST(move_into_scene_collection_a)
-VIEW_LAYER_TEST(move_into_scene_collection_b)
-VIEW_LAYER_TEST(move_into_scene_collection_c)
-VIEW_LAYER_TEST(move_into_scene_collection_d)
-VIEW_LAYER_TEST(move_into_scene_collection_e)
-VIEW_LAYER_TEST(move_into_scene_collection_f)
-VIEW_LAYER_TEST(move_into_scene_collection_g)
-VIEW_LAYER_TEST(move_into_scene_collection_h)
-VIEW_LAYER_TEST(move_into_scene_collection_i)
-VIEW_LAYER_TEST(move_into_scene_collection_j)
-VIEW_LAYER_TEST(move_into_scene_collection_k)
-VIEW_LAYER_TEST(move_into_scene_collection_l)
-VIEW_LAYER_TEST(move_into_scene_collection_sync_a)
-VIEW_LAYER_TEST(move_into_scene_collection_sync_b)
-VIEW_LAYER_TEST(move_into_scene_collection_sync_c)
-VIEW_LAYER_TEST(move_into_scene_collection_sync_d)
-VIEW_LAYER_TEST(move_into_scene_collection_sync_e)
-VIEW_LAYER_TEST(move_into_scene_collection_sync_f)
-VIEW_LAYER_TEST(move_into_scene_collection_sync_g)
-VIEW_LAYER_TEST(move_into_scene_collection_sync_h)
-VIEW_LAYER_TEST(move_into_scene_collection_sync_i)
-VIEW_LAYER_TEST(move_into_scene_collection_sync_j)
-VIEW_LAYER_TEST(move_into_scene_collection_sync_k)
-VIEW_LAYER_TEST(move_into_scene_collection_sync_l)
-VIEW_LAYER_TEST(move_above_below_layer_collection_a)
-VIEW_LAYER_TEST(move_above_below_layer_collection_b)
-VIEW_LAYER_TEST(move_above_below_layer_collection_c)
-VIEW_LAYER_TEST(move_above_below_layer_collection_d)
-VIEW_LAYER_TEST(move_above_below_layer_collection_e)
-VIEW_LAYER_TEST(move_above_below_layer_collection_f)
-VIEW_LAYER_TEST(move_above_below_layer_collection_g)
-VIEW_LAYER_TEST(move_above_below_layer_collection_h)
-VIEW_LAYER_TEST(move_above_below_layer_collection_i)
-VIEW_LAYER_TEST(move_above_below_layer_collection_j)
-VIEW_LAYER_TEST(move_above_below_layer_collection_k)
-VIEW_LAYER_TEST(move_above_below_layer_collection_l)
-VIEW_LAYER_TEST(move_into_layer_collection_a)
-VIEW_LAYER_TEST(move_into_layer_collection_b)
-VIEW_LAYER_TEST(move_into_layer_collection_c)
-VIEW_LAYER_TEST(move_into_layer_collection_d)
-VIEW_LAYER_TEST(move_into_layer_collection_e)
-VIEW_LAYER_TEST(move_into_layer_collection_f)
-VIEW_LAYER_TEST(move_into_layer_collection_g)
-VIEW_LAYER_TEST(move_into_layer_collection_h)
-VIEW_LAYER_TEST(move_into_layer_collection_i)
-VIEW_LAYER_TEST(move_into_layer_collection_j)
-VIEW_LAYER_TEST(layer_linking)
-VIEW_LAYER_TEST(layer_syncing)
-VIEW_LAYER_TEST(scene_collection_delete)
-VIEW_LAYER_TEST(scene_copy_a)
-VIEW_LAYER_TEST(scene_copy_b)
-VIEW_LAYER_TEST(scene_copy_c)
-VIEW_LAYER_TEST(scene_copy_d)
-VIEW_LAYER_TEST(scene_copy_e)
-VIEW_LAYER_TEST(scene_copy_f)
-VIEW_LAYER_TEST(scene_delete)
-VIEW_LAYER_TEST(scene_objects)
-VIEW_LAYER_TEST(scene_write_read)
-VIEW_LAYER_TEST(view_layer_rename)
+view_layer_test(active_collection)
+view_layer_test(background_set)
+view_layer_test(collection_new_sync)
+view_layer_test(collection_rename_a)
+view_layer_test(collection_rename_b)
+# view_layer_test(evaluation_render_settings_a)
+# view_layer_test(evaluation_render_settings_b)
+# view_layer_test(evaluation_render_settings_c)
+# view_layer_test(evaluation_render_settings_d)
+# view_layer_test(evaluation_render_settings_e)
+# view_layer_test(evaluation_render_settings_f)
+# view_layer_test(evaluation_render_settings_g)
+# view_layer_test(evaluation_render_settings_h)
+# view_layer_test(evaluation_render_settings_i)
+view_layer_test(evaluation_visibility_a)
+view_layer_test(evaluation_visibility_b)
+view_layer_test(evaluation_visibility_c)
+view_layer_test(evaluation_visibility_d)
+view_layer_test(evaluation_visibility_e)
+view_layer_test(evaluation_visibility_f)
+view_layer_test(evaluation_visibility_g)
+view_layer_test(evaluation_visibility_h)
+view_layer_test(evaluation_visibility_i)
+view_layer_test(evaluation_visibility_j)
+view_layer_test(evaluation_selectability_a)
+view_layer_test(evaluation_selectability_b)
+view_layer_test(evaluation_selectability_c)
+view_layer_test(evaluation_selectability_d)
+view_layer_test(evaluation_selectability_e)
+view_layer_test(evaluation_selectability_f)
+view_layer_test(group_a)
+view_layer_test(group_b)
+view_layer_test(group_c)
+view_layer_test(group_d)
+view_layer_test(group_e)
+view_layer_test(object_add_cylinder)
+view_layer_test(object_add_empty)
+view_layer_test(object_add_torus)
+view_layer_test(object_add_no_collection_cylinder)
+view_layer_test(object_add_no_collection_empty)
+view_layer_test(object_add_no_collection_torus)
+view_layer_test(object_copy)
+view_layer_test(object_delete_a)
+view_layer_test(object_delete_b)
+view_layer_test(object_link_a)
+view_layer_test(object_link_b)
+view_layer_test(object_link_c)
+view_layer_test(operator_context)
+view_layer_test(make_single_user)
+view_layer_test(move_above_below_scene_collection_a)
+view_layer_test(move_above_below_scene_collection_b)
+view_layer_test(move_above_below_scene_collection_c)
+view_layer_test(move_above_below_scene_collection_d)
+view_layer_test(move_above_below_scene_collection_e)
+view_layer_test(move_above_below_scene_collection_f)
+view_layer_test(move_above_below_scene_collection_g)
+view_layer_test(move_above_below_scene_collection_h)
+view_layer_test(move_above_below_scene_collection_i)
+view_layer_test(move_above_below_scene_collection_sync_a)
+view_layer_test(move_above_below_scene_collection_sync_b)
+view_layer_test(move_above_below_scene_collection_sync_c)
+view_layer_test(move_above_below_scene_collection_sync_d)
+view_layer_test(move_above_below_scene_collection_sync_e)
+view_layer_test(move_above_below_scene_collection_sync_f)
+view_layer_test(move_above_below_scene_collection_sync_g)
+view_layer_test(move_above_below_scene_collection_sync_h)
+view_layer_test(move_above_below_scene_collection_sync_i)
+view_layer_test(move_into_scene_collection_a)
+view_layer_test(move_into_scene_collection_b)
+view_layer_test(move_into_scene_collection_c)
+view_layer_test(move_into_scene_collection_d)
+view_layer_test(move_into_scene_collection_e)
+view_layer_test(move_into_scene_collection_f)
+view_layer_test(move_into_scene_collection_g)
+view_layer_test(move_into_scene_collection_h)
+view_layer_test(move_into_scene_collection_i)
+view_layer_test(move_into_scene_collection_j)
+view_layer_test(move_into_scene_collection_k)
+view_layer_test(move_into_scene_collection_l)
+view_layer_test(move_into_scene_collection_sync_a)
+view_layer_test(move_into_scene_collection_sync_b)
+view_layer_test(move_into_scene_collection_sync_c)
+view_layer_test(move_into_scene_collection_sync_d)
+view_layer_test(move_into_scene_collection_sync_e)
+view_layer_test(move_into_scene_collection_sync_f)
+view_layer_test(move_into_scene_collection_sync_g)
+view_layer_test(move_into_scene_collection_sync_h)
+view_layer_test(move_into_scene_collection_sync_i)
+view_layer_test(move_into_scene_collection_sync_j)
+view_layer_test(move_into_scene_collection_sync_k)
+view_layer_test(move_into_scene_collection_sync_l)
+view_layer_test(move_above_below_layer_collection_a)
+view_layer_test(move_above_below_layer_collection_b)
+view_layer_test(move_above_below_layer_collection_c)
+view_layer_test(move_above_below_layer_collection_d)
+view_layer_test(move_above_below_layer_collection_e)
+view_layer_test(move_above_below_layer_collection_f)
+view_layer_test(move_above_below_layer_collection_g)
+view_layer_test(move_above_below_layer_collection_h)
+view_layer_test(move_above_below_layer_collection_i)
+view_layer_test(move_above_below_layer_collection_j)
+view_layer_test(move_above_below_layer_collection_k)
+view_layer_test(move_above_below_layer_collection_l)
+view_layer_test(move_into_layer_collection_a)
+view_layer_test(move_into_layer_collection_b)
+view_layer_test(move_into_layer_collection_c)
+view_layer_test(move_into_layer_collection_d)
+view_layer_test(move_into_layer_collection_e)
+view_layer_test(move_into_layer_collection_f)
+view_layer_test(move_into_layer_collection_g)
+view_layer_test(move_into_layer_collection_h)
+view_layer_test(move_into_layer_collection_i)
+view_layer_test(move_into_layer_collection_j)
+view_layer_test(layer_linking)
+view_layer_test(layer_syncing)
+view_layer_test(scene_collection_delete)
+view_layer_test(scene_copy_a)
+view_layer_test(scene_copy_b)
+view_layer_test(scene_copy_c)
+view_layer_test(scene_copy_d)
+view_layer_test(scene_copy_e)
+view_layer_test(scene_copy_f)
+view_layer_test(scene_delete)
+view_layer_test(scene_objects)
+view_layer_test(scene_write_read)
+view_layer_test(view_layer_rename)