[Bf-blender-cvs] [db6b4639fc6] blender2.8: Layer: Adding unittest for a problem with selectability evaluation

Dalai Felinto noreply at git.blender.org
Mon Apr 3 17:46:15 CEST 2017


Commit: db6b4639fc67ef6e679cf577c3e31f2c7c8c8cd5
Author: Dalai Felinto
Date:   Mon Apr 3 17:45:20 2017 +0200
Branches: blender2.8
https://developer.blender.org/rBdb6b4639fc67ef6e679cf577c3e31f2c7c8c8cd5

Layer: Adding unittest for a problem with selectability evaluation

This is currently failing (and causing the object_delete test to fail). To be fixed separately

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

M	tests/python/render_layer/CMakeLists.txt
M	tests/python/render_layer/render_layer_common.py
A	tests/python/render_layer/test_evaluation_selectability_f.py
D	tests/python/render_layer/test_object_delete.py
A	tests/python/render_layer/test_object_delete_a.py
A	tests/python/render_layer/test_object_delete_b.py

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

diff --git a/tests/python/render_layer/CMakeLists.txt b/tests/python/render_layer/CMakeLists.txt
index a546bdbf741..962c1f7da36 100644
--- a/tests/python/render_layer/CMakeLists.txt
+++ b/tests/python/render_layer/CMakeLists.txt
@@ -69,6 +69,7 @@ RENDER_LAYER_TEST(evaluation_selectability_b)
 RENDER_LAYER_TEST(evaluation_selectability_c)
 RENDER_LAYER_TEST(evaluation_selectability_d)
 RENDER_LAYER_TEST(evaluation_selectability_e)
+RENDER_LAYER_TEST(evaluation_selectability_f)
 RENDER_LAYER_TEST(object_add_cylinder)
 RENDER_LAYER_TEST(object_add_empty)
 RENDER_LAYER_TEST(object_add_torus)
@@ -76,7 +77,8 @@ RENDER_LAYER_TEST(object_add_no_collection_cylinder)
 RENDER_LAYER_TEST(object_add_no_collection_empty)
 RENDER_LAYER_TEST(object_add_no_collection_torus)
 RENDER_LAYER_TEST(object_copy)
-RENDER_LAYER_TEST(object_delete)
+RENDER_LAYER_TEST(object_delete_a)
+RENDER_LAYER_TEST(object_delete_b)
 RENDER_LAYER_TEST(object_link_a)
 RENDER_LAYER_TEST(object_link_b)
 RENDER_LAYER_TEST(object_link_c)
diff --git a/tests/python/render_layer/render_layer_common.py b/tests/python/render_layer/render_layer_common.py
index 5d4389482bb..abf0296a5c7 100644
--- a/tests/python/render_layer/render_layer_common.py
+++ b/tests/python/render_layer/render_layer_common.py
@@ -382,6 +382,67 @@ class RenderLayerTesting(unittest.TestCase):
                 ),
                 "Scene copy \"{0}\" test failed".format(copy_mode.title()))
 
+    def do_object_delete(self, del_mode):
+        import bpy
+        import os
+        import tempfile
+        import filecmp
+
+        ROOT = self.get_root()
+        with tempfile.TemporaryDirectory() as dirpath:
+            filepath_layers = os.path.join(ROOT, 'layers.blend')
+            filepath_reference_json = os.path.join(ROOT, 'layers_object_delete.json')
+
+            # open file
+            bpy.ops.wm.open_mainfile('EXEC_DEFAULT', filepath=filepath_layers)
+            self.rename_collections()
+
+            # create sub-collections
+            three_b = bpy.data.objects.get('T.3b')
+            three_d = bpy.data.objects.get('T.3d')
+
+            scene = bpy.context.scene
+
+            # mangle the file a bit with some objects linked across collections
+            subzero = scene.master_collection.collections['1'].collections.new('sub-zero')
+            scorpion = subzero.collections.new('scorpion')
+            subzero.objects.link(three_d)
+            scorpion.objects.link(three_b)
+            scorpion.objects.link(three_d)
+
+            # object to delete
+            ob = three_d
+
+            # delete object
+            if del_mode == 'DATA':
+                bpy.data.objects.remove(ob, do_unlink=True)
+
+            elif del_mode == 'OPERATOR':
+                bpy.context.scene.update()  # update depsgraph
+                bpy.ops.object.select_all(action='DESELECT')
+                ob.select_set(action='SELECT')
+                self.assertTrue(ob.select_get())
+                bpy.ops.object.delete()
+
+            # save file
+            filepath_generated = os.path.join(dirpath, 'generated.blend')
+            bpy.ops.wm.save_mainfile('EXEC_DEFAULT', filepath=filepath_generated)
+
+            # get the generated json
+            datas = query_scene(filepath_generated, 'Main', (get_scene_collections, get_layers))
+            self.assertTrue(datas, "Data is not valid")
+
+            filepath_generated_json = os.path.join(dirpath, "generated.json")
+            with open(filepath_generated_json, "w") as f:
+                for data in datas:
+                    f.write(dump(data))
+
+            self.assertTrue(compare_files(
+                filepath_generated_json,
+                filepath_reference_json,
+                ),
+                "Scene dump files differ")
+
     def cleanup_tree(self):
         """
         Remove any existent layer and collections,
diff --git a/tests/python/render_layer/test_evaluation_selectability_f.py b/tests/python/render_layer/test_evaluation_selectability_f.py
new file mode 100644
index 00000000000..436f2f5dfc7
--- /dev/null
+++ b/tests/python/render_layer/test_evaluation_selectability_f.py
@@ -0,0 +1,48 @@
+# ############################################################
+# Importing - Same For All Render Layer Tests
+# ############################################################
+
+import unittest
+import os
+import sys
+
+sys.path.append(os.path.dirname(__file__))
+from render_layer_common import *
+
+
+# ############################################################
+# Testing
+# ############################################################
+
+class UnitTesting(RenderLayerTesting):
+    def test_selectability(self):
+        import bpy
+        scene = bpy.context.scene
+
+        cube = bpy.data.objects.new('guinea pig', bpy.data.meshes.new('mesh'))
+        scene_collection = scene.master_collection.collections.new('collection')
+        layer_collection = scene.render_layers.active.collections.link(scene_collection)
+
+        bpy.context.scene.update()  # update depsgraph
+
+        scene_collection.objects.link(cube)
+
+        self.assertFalse(layer_collection.hide)
+        self.assertFalse(layer_collection.hide_select)
+
+        bpy.context.scene.update()  # update depsgraph
+        cube.select_set(action='SELECT')
+        self.assertTrue(cube.select_get())
+
+# ############################################################
+# Main - Same For All Render Layer Tests
+# ############################################################
+
+if __name__ == '__main__':
+    import sys
+
+    extra_arguments = sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else []
+    sys.argv = [__file__] + (sys.argv[sys.argv.index("--") + 2:] if "--" in sys.argv else [])
+
+    UnitTesting._extra_arguments = extra_arguments
+    unittest.main()
diff --git a/tests/python/render_layer/test_object_delete.py b/tests/python/render_layer/test_object_delete.py
deleted file mode 100644
index 9b97c97c741..00000000000
--- a/tests/python/render_layer/test_object_delete.py
+++ /dev/null
@@ -1,103 +0,0 @@
-# ############################################################
-# Importing - Same For All Render Layer Tests
-# ############################################################
-
-import unittest
-import os
-import sys
-
-sys.path.append(os.path.dirname(__file__))
-from render_layer_common import *
-
-
-# ############################################################
-# Testing
-# ############################################################
-
-class UnitTesting(RenderLayerTesting):
-    def do_object_delete(self, del_mode):
-        import bpy
-        import os
-        import tempfile
-        import filecmp
-
-        ROOT = self.get_root()
-        with tempfile.TemporaryDirectory() as dirpath:
-            filepath_layers = os.path.join(ROOT, 'layers.blend')
-            filepath_reference_json = os.path.join(ROOT, 'layers_object_delete.json')
-
-            # open file
-            bpy.ops.wm.open_mainfile('EXEC_DEFAULT', filepath=filepath_layers)
-            self.rename_collections()
-
-            # create sub-collections
-            three_b = bpy.data.objects.get('T.3b')
-            three_d = bpy.data.objects.get('T.3d')
-
-            scene = bpy.context.scene
-
-            # mangle the file a bit with some objects linked across collections
-            subzero = scene.master_collection.collections['1'].collections.new('sub-zero')
-            scorpion = subzero.collections.new('scorpion')
-            subzero.objects.link(three_d)
-            scorpion.objects.link(three_b)
-            scorpion.objects.link(three_d)
-
-            # object to delete
-            ob = three_d
-
-            # delete object
-            if del_mode == 'DATA':
-                bpy.data.objects.remove(ob, do_unlink=True)
-
-            elif del_mode == 'OPERATOR':
-                bpy.ops.object.select_all(action='DESELECT')
-                ob.select_set(action='SELECT')
-                bpy.ops.object.delete()
-
-            # save file
-            filepath_generated = os.path.join(dirpath, 'generated.blend')
-            bpy.ops.wm.save_mainfile('EXEC_DEFAULT', filepath=filepath_generated)
-
-            # get the generated json
-            datas = query_scene(filepath_generated, 'Main', (get_scene_collections, get_layers))
-            self.assertTrue(datas, "Data is not valid")
-
-            filepath_generated_json = os.path.join(dirpath, "generated.json")
-            with open(filepath_generated_json, "w") as f:
-                for data in datas:
-                    f.write(dump(data))
-
-            self.assertTrue(compare_files(
-                filepath_generated_json,
-                filepath_reference_json,
-                ),
-                "Scene dump files differ")
-
-    def test_object_delete_data(self):
-        """
-        See if objects are removed correctly from all related collections
-        bpy.data.objects.remove()
-        """
-        self.do_object_delete('DATA')
-
-    def test_object_delete_operator(self):
-        """
-        See if new objects are added to the correct collection
-        bpy.ops.object.del()
-        """
-        self.do_object_delete('OPERATOR')
-
-
-# ############################################################
-# Main - Same For All Render Layer Tests
-# ############################################################
-
-if __name__ == '__main__':
-    import sys
-
-    extra_arguments = sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else []
-    sys.argv = [__file__] + (sys.argv[sys.argv.index("--") + 2:] if "--" in sys.argv else [])
-
-    UnitTesting._extra_arguments = extra_arguments
-    unittest.main()
diff --git a/tests/python/render_layer/test_object_delete_a.py b/tests/python/render_layer/test_object_delete_a.py
new file mode 100644
index 00000000000..4a72ca06f46
--- /dev/null
+++ b/tests/python/render_layer/test_object_delete_a.py
@@ -0,0 +1,37 @@
+# ############################################################
+# Importing - Same For All Render Layer Tests
+# ############################################################
+
+import unittest
+import os
+import sys
+
+sys.path.append(os.path.dirname(__file__))
+

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list