[Bf-blender-cvs] [4a02b9ffeb0] master: Regression Testing: Running tests based on blend files

Himanshi Kalra noreply at git.blender.org
Tue Jul 27 17:34:30 CEST 2021


Commit: 4a02b9ffeb018ced11768ca99935fda5fa5f7da0
Author: Himanshi Kalra
Date:   Tue Jul 27 21:00:28 2021 +0530
Branches: master
https://developer.blender.org/rB4a02b9ffeb018ced11768ca99935fda5fa5f7da0

Regression Testing: Running tests based on blend files

Runs tests based on blend files with minimum python interaction.
Developed as part of GSoC 2021 - Regression Testing of Geometry Nodes.
Earlier, tests were built from scratch by adding a modifier/operation
from the Python API.
Now, tests can also be created inside blender and are compared using
Python script.

Features: Automatically adding expected object if it doesn't exist.
This patch adds tests for the following Geometry Nodes category:
* Curves
* Geometry
* Mesh
* Points

The implemented UML diagram for refactoring of mesh test framework.
{F10225906}

Technical Changes:
SpecMeshTest: It adds the modifier/operation based on the Spec provided.
BlendFileTest: It applies already existing modifier/operation from the blend file.

Test folders hierarchy with tests. This folder should be extracted to `lib\tests\modeling`
{F10240651}
Note: The `geometry_nodes` folder might lie under another `geometry_nodes` folder while extracting, please double check. Use the inner-most one.
The hierarchy should be:
-`lib\tests\modeling\geometry_nodes\mesh`
-`lib\tests\modeling\geometry_nodes\points`
and so on.

* From `ctest` the tests should be run as `ctest -R geo_node -C [Configuration]` on Windows.
* Each single test can be run with its entire name e..g `ctest -R geo_node_geometry_join_geometry`.(just an example). Run `ctest -N -R geo_node` to see all tests.
* From blender, the tests can be run `blender -b path\to\blend\file --python path\to\geo_node_test.py`

Reviewed By: zazizizou, JacquesLucke

Differential Revision: https://developer.blender.org/D11611

===================================================================

M	tests/python/CMakeLists.txt
M	tests/python/bevel_operator.py
M	tests/python/boolean_operator.py
M	tests/python/curve_to_mesh.py
M	tests/python/deform_modifiers.py
A	tests/python/geo_node_test.py
M	tests/python/modifiers.py
M	tests/python/modules/mesh_test.py
M	tests/python/operators.py
M	tests/python/physics_cloth.py
M	tests/python/physics_dynamic_paint.py
M	tests/python/physics_ocean.py
M	tests/python/physics_particle_instance.py
M	tests/python/physics_particle_system.py
M	tests/python/physics_softbody.py

===================================================================

diff --git a/tests/python/CMakeLists.txt b/tests/python/CMakeLists.txt
index 92cebb7d274..0f9665f0a95 100644
--- a/tests/python/CMakeLists.txt
+++ b/tests/python/CMakeLists.txt
@@ -740,6 +740,29 @@ if(WITH_COMPOSITOR)
 
 endif()
 
+set(geo_node_tests
+  curves
+  geometry
+  mesh
+  points
+)
+
+foreach(geo_node_test ${geo_node_tests})
+  if(EXISTS "${TEST_SRC_DIR}/modeling/geometry_nodes/${geo_node_test}/")
+    file(GLOB files "${TEST_SRC_DIR}/modeling/geometry_nodes/${geo_node_test}/*.blend")
+    foreach(file ${files})
+      get_filename_component(filename ${file} NAME_WE)
+      add_blender_test(
+        geo_node_${geo_node_test}_test_${filename}
+        ${file}
+        --python ${TEST_PYTHON_DIR}/geo_node_test.py
+      )
+      endforeach()
+  else()
+    MESSAGE(STATUS "No directory named ${TEST_SRC_DIR}/modeling/geometry_nodes/${geo_node_test}/ 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")
diff --git a/tests/python/bevel_operator.py b/tests/python/bevel_operator.py
index c732d437b57..726bf4b5b03 100644
--- a/tests/python/bevel_operator.py
+++ b/tests/python/bevel_operator.py
@@ -27,272 +27,272 @@ import os
 import sys
 
 sys.path.append(os.path.dirname(os.path.realpath(__file__)))
-from modules.mesh_test import MeshTest, OperatorSpecEditMode, RunTest
+from modules.mesh_test import SpecMeshTest, OperatorSpecEditMode, RunTest
 
 
 def main():
     tests = [
         # 0
-        MeshTest('Cube_test_1', 'Cube_test', 'Cube_result_1',
+        SpecMeshTest('Cube_test_1', 'Cube_test', 'Cube_result_1',
 
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.2}, 'EDGE', {10})]),
-        MeshTest('Cube_test_2', 'Cube_test', 'Cube_result_2',
+        SpecMeshTest('Cube_test_2', 'Cube_test', 'Cube_result_2',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.2, 'offset_type': 'WIDTH'}, 'EDGE', {10, 7}, )]),
-        MeshTest('Cube_test_3', 'Cube_test', 'Cube_result_3',
+        SpecMeshTest('Cube_test_3', 'Cube_test', 'Cube_result_3',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.2, 'offset_type': 'DEPTH'}, 'EDGE', {8, 10, 7}, )]),
-        MeshTest('Cube_test_4', 'Cube_test', 'Cube_result_4',
+        SpecMeshTest('Cube_test_4', 'Cube_test', 'Cube_result_4',
                  [OperatorSpecEditMode('bevel', {'offset': 0.4, 'segments': 2}, 'EDGE', {10}, )]),
-        MeshTest('Cube_test_5', 'Cube_test', 'Cube_result_5',
+        SpecMeshTest('Cube_test_5', 'Cube_test', 'Cube_result_5',
                  [OperatorSpecEditMode('bevel', {'offset': 0.4, 'segments': 3}, 'EDGE', {10, 7}, )]),
         # 5
-        MeshTest('Cube_test_6', 'Cube_test', 'Cube_result_6',
+        SpecMeshTest('Cube_test_6', 'Cube_test', 'Cube_result_6',
                  [OperatorSpecEditMode('bevel', {'offset': 0.4, 'segments': 4}, 'EDGE', {8, 10, 7}, )]),
-        MeshTest('Cube_test_7', 'Cube_test', 'Cube_result_7',
+        SpecMeshTest('Cube_test_7', 'Cube_test', 'Cube_result_7',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.4, 'segments': 5, 'profile': 0.2}, 'EDGE', {0, 10, 4, 7}, )]),
-        MeshTest('Cube_test_8', 'Cube_test', 'Cube_result_8',
+        SpecMeshTest('Cube_test_8', 'Cube_test', 'Cube_result_8',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.4, 'segments': 5, 'profile': 0.25}, 'EDGE', {8, 10, 7}, )]),
-        MeshTest('Cube_test_9', 'Cube_test', 'Cube_result_9',
+        SpecMeshTest('Cube_test_9', 'Cube_test', 'Cube_result_9',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.4, 'segments': 6, 'profile': 0.9}, 'EDGE', {8, 10, 7}, )]),
-        MeshTest('Cube_test_10', 'Cube_test', 'Cube_result_10',
+        SpecMeshTest('Cube_test_10', 'Cube_test', 'Cube_result_10',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.4, 'segments': 4, 'profile': 1.0}, 'EDGE', {10, 7}, )]),
         # 10
-        MeshTest('Cube_test_11', 'Cube_test', 'Cube_result_11',
+        SpecMeshTest('Cube_test_11', 'Cube_test', 'Cube_result_11',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.4, 'segments': 5, 'profile': 1.0}, 'EDGE', {8, 10, 7}, )]),
-        MeshTest("test 12", 'Cube_test', 'Cube_result_12',
+        SpecMeshTest("test 12", 'Cube_test', 'Cube_result_12',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.4, 'segments': 8}, 'EDGE',
                                        {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, )]),
-        MeshTest('Pyramid4_test_1', 'Pyr4_test', 'Pyr4_result_1',
+        SpecMeshTest('Pyramid4_test_1', 'Pyr4_test', 'Pyr4_result_1',
                  [OperatorSpecEditMode('bevel', {'offset': 0.2}, 'EDGE', {5}, )]),
-        MeshTest('Pyramid4_test_2', 'Pyr4_test', 'Pyr4_result_2',
+        SpecMeshTest('Pyramid4_test_2', 'Pyr4_test', 'Pyr4_result_2',
                  [OperatorSpecEditMode('bevel', {'offset': 0.2}, 'EDGE', {2, 5}, )]),
-        MeshTest('Pyramid4_test_3', 'Pyr4_test', 'Pyr4_result_3',
+        SpecMeshTest('Pyramid4_test_3', 'Pyr4_test', 'Pyr4_result_3',
                  [OperatorSpecEditMode('bevel', {'offset': 0.2}, 'EDGE', {2, 3, 5}, )]),
         # 15
-        MeshTest('Pyramid4_test_4', 'Pyr4_test', 'Pyr4_result_4',
+        SpecMeshTest('Pyramid4_test_4', 'Pyr4_test', 'Pyr4_result_4',
                  [OperatorSpecEditMode('bevel', {'offset': 0.2}, 'EDGE', {1, 2, 3, 5}, )]),
-        MeshTest('Pyramid4_test_5', 'Pyr4_test', 'Pyr4_result_5',
+        SpecMeshTest('Pyramid4_test_5', 'Pyr4_test', 'Pyr4_result_5',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.2, 'segments': 3}, 'EDGE', {1, 2, 3, 5}, )]),
-        MeshTest('Pyramid4_test_6', 'Pyr4_test', 'Pyr4_result_6',
+        SpecMeshTest('Pyramid4_test_6', 'Pyr4_test', 'Pyr4_result_6',
                  [OperatorSpecEditMode('bevel', {'offset': 0.2, 'segments': 2}, 'EDGE', {2, 3}, )]),
-        MeshTest('Pyramid4_test_7', 'Pyr4_test', 'Pyr4_result_7',
+        SpecMeshTest('Pyramid4_test_7', 'Pyr4_test', 'Pyr4_result_7',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.2, 'segments': 4, 'profile': 0.15}, 'EDGE', {1, 2, 3, 5}, )]),
-        MeshTest('Pyramid4_test_8', 'Pyr4_test', 'Pyr4_result_8',
+        SpecMeshTest('Pyramid4_test_8', 'Pyr4_test', 'Pyr4_result_8',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.75, 'segments': 4, 'affect': 'VERTICES'}, 'VERT', {1}, )]),
         # 20
-        MeshTest('Pyramid4_test_9', 'Pyr4_test', 'Pyr4_result_9',
+        SpecMeshTest('Pyramid4_test_9', 'Pyr4_test', 'Pyr4_result_9',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.75, 'segments': 3, 'affect': 'VERTICES', 'profile': 0.25}, 'VERT',
                                        {1}, )]),
-        MeshTest('Pyramid6_test_1', 'Pyr6_test', 'Pyr6_result_1',
+        SpecMeshTest('Pyramid6_test_1', 'Pyr6_test', 'Pyr6_result_1',
                  [OperatorSpecEditMode('bevel', {'offset': 0.2}, 'EDGE', {2, 3}, )]),
-        MeshTest('Pyramid6_test_2', 'Pyr6_test', 'Pyr6_result_2',
+        SpecMeshTest('Pyramid6_test_2', 'Pyr6_test', 'Pyr6_result_2',
                  [OperatorSpecEditMode('bevel', {'offset': 0.2, 'segments': 2}, 'EDGE', {8, 2, 3}, )]),
-        MeshTest('Pyramid6_test_3', 'Pyr6_test', 'Pyr6_result_3',
+        SpecMeshTest('Pyramid6_test_3', 'Pyr6_test', 'Pyr6_result_3',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.2, 'segments': 4, 'profile': 0.8}, 'EDGE',
                                        {0, 2, 3, 4, 6, 7, 9, 10, 11}, )]),
-        MeshTest('Sept_test_1', 'Sept_test', 'Sept_result_1',
+        SpecMeshTest('Sept_test_1', 'Sept_test', 'Sept_result_1',
                  [OperatorSpecEditMode('bevel', {'offset': 0.1}, 'EDGE', {8, 9, 3, 11}, )]),
         # 25
-        MeshTest('Sept_test_2', 'Sept_test', 'Sept_result_2',
+        SpecMeshTest('Sept_test_2', 'Sept_test', 'Sept_result_2',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.1, 'offset_type': 'WIDTH'}, 'EDGE', {8, 9, 11}, )]),
-        MeshTest('Saddle_test_1', 'Saddle_test', 'Saddle_result_1',
+        SpecMeshTest('Saddle_test_1', 'Saddle_test', 'Saddle_result_1',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.3, 'segments': 5}, 'EDGE', {2, 8, 9, 12, 13, 14}, )]),
-        MeshTest('Saddle_test_2', 'Saddle_test', 'Saddle_result_2',
+        SpecMeshTest('Saddle_test_2', 'Saddle_test', 'Saddle_result_2',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.6, 'segments': 6, 'affect': 'VERTICES'}, 'VERT', {4}, )]),
 
-        MeshTest('Bent_test', 'Bent_test', 'Bent_result_1',
+        SpecMeshTest('Bent_test', 'Bent_test', 'Bent_result_1',
                  [OperatorSpecEditMode('bevel', {'offset': 0.2, 'segments': 3},
                                        'EDGE',
                                        {2, 5, 8, 11, 14, 18, 21, 24, 27, 30, 34, 37, 40, 43, 46, 50, 53, 56, 59, 62,
                                         112, 113, 114, 115}, )]),
-        MeshTest('Bentlines_test_1', 'Bentlines_test', 'Bentlines_result_1',
+        SpecMeshTest('Bentlines_test_1', 'Bentlines_test', 'Bentlines_result_1',
                  [OperatorSpecEditMode('bevel',
                                        {'offset': 0.2, 'segments': 3}, 'EDGE', {1, 8, 9, 10, 11}, )]),
         # 30
-        MeshTest('Flaretop_test_1', 'Flaretop_test', 'Flaretop_result_1',
+        SpecMeshTest('Flaretop_test_1', 'Flaretop_test', 'Flaretop_result_1',
                  [OperatorSpecEditMod

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list