[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