[Bf-blender-cvs] [caed6aa] render-layers: unittest: object delete

Dalai Felinto noreply at git.blender.org
Tue Jan 3 16:45:57 CET 2017


Commit: caed6aad4baed540c37ce66e7ee3e9345e3d18c7
Author: Dalai Felinto
Date:   Tue Jan 3 16:42:27 2017 +0100
Branches: render-layers
https://developer.blender.org/rBcaed6aad4baed540c37ce66e7ee3e9345e3d18c7

unittest: object delete

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

M	tests/python/bl_render_layer.py

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

diff --git a/tests/python/bl_render_layer.py b/tests/python/bl_render_layer.py
index 9596a6a..ff8e28b 100644
--- a/tests/python/bl_render_layer.py
+++ b/tests/python/bl_render_layer.py
@@ -645,6 +645,78 @@ class UnitsTesting(unittest.TestCase):
                     "Collection index mismatch: [{0}] : {1} != {2}".format(
                         i, name, layer.collections.active.name))
 
+    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)
+
+            # 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')
+                bpy.context.render_layer.objects.active = ob
+                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')
+
     def do_object_add(self, filepath_json, add_mode):
         import bpy
         import os




More information about the Bf-blender-cvs mailing list