[Bf-blender-cvs] [ce46e80b874] soc-2020-testing-frameworks: Review: Added Exception safety, some minor improvements and works as intended.
calra123
noreply at git.blender.org
Thu Jul 9 19:39:12 CEST 2020
Commit: ce46e80b87484d3f97525f0c9494c03ba408a145
Author: calra123
Date: Fri Jun 12 00:58:00 2020 +0530
Branches: soc-2020-testing-frameworks
https://developer.blender.org/rBce46e80b87484d3f97525f0c9494c03ba408a145
Review: Added Exception safety, some minor improvements and works as
intended.
===================================================================
M tests/python/modules/test_object_generator.py
===================================================================
diff --git a/tests/python/modules/test_object_generator.py b/tests/python/modules/test_object_generator.py
index 6ac13c8d450..f24e6a94551 100644
--- a/tests/python/modules/test_object_generator.py
+++ b/tests/python/modules/test_object_generator.py
@@ -26,27 +26,31 @@ import random
from pathlib import Path
offset_x = 5
-flag = 0
+fail = 0
-def vertex_selection(mesh, vert_set: set, randomize: bool):
- """Selecting vertices which will be later assigned to vertex groups"""
+def vertex_selection(object, vert_set: set, randomize: bool):
+ """
+ Selecting vertices which will be later assigned to vertex groups
+ :param: object: the selected object for vertex group
+ :param: object: vert_set: set of indices e.g.{0,2,3)
+ :parm: randomize: bool: select vertices randomly"""
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.select_all(action='DESELECT')
bpy.ops.object.mode_set(mode='OBJECT')
- mesh.select_set(1)
if not randomize:
for index in vert_set:
- mesh.data.vertices[index].select = True
+ object.data.vertices[index].select = True
+
else:
- max_vert = len(mesh.data.vertices)
+ max_vert = len(object.data.vertices)
random_size = random.randint(1, max_vert)
print(random_size)
for index in range(random_size):
random_index = random.randint(0, random_size)
print(random_index)
- mesh.data.vertices[random_index].select = True
+ object.data.vertices[random_index].select = True
def create_vertex_group(obj_name, vg_name, vg_vert_set, randomize):
@@ -59,24 +63,31 @@ def create_vertex_group(obj_name, vg_name, vg_vert_set, randomize):
# Validating user input
# -checking for whether the object exists
# -index value is within the right range
-
- if obj_name not in bpy.data.objects:
- global flag
- flag = 1
+ if not randomize and len(vg_vert_set) == 0:
+ global fail
+ fail = 1
+ raise Exception('Set is empty!')
+ if obj_name not in bpy.data.objects.keys():
+ fail = 1
raise Exception('Object {} not Found!'.format(obj_name))
- mesh = bpy.data.objects[obj_name]
- max_vert = len(mesh.data.vertices)
+ object = bpy.data.objects[obj_name]
+ bpy.ops.object.select_all(action='DESELECT')
+ object.select_set(True)
+ bpy.context.view_layer.objects.active = object
+
+ max_vert = len(object.data.vertices)
for i in vg_vert_set:
if not isinstance(i, int) or i < 0 or i > max_vert - 1:
- flag = 1
+ fail = 1
raise Exception("Please enter a valid index(integer).")
- mesh.vertex_groups.new(name=vg_name)
- vertex_selection(mesh, vg_vert_set, randomize)
+ object.vertex_groups.new(name=vg_name)
+ vertex_selection(object, vg_vert_set, randomize)
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.object.vertex_group_assign()
bpy.ops.object.mode_set(mode='OBJECT')
+ print("'{}' vertex group is created.".format(vg_name))
def get_last_location():
@@ -136,9 +147,9 @@ def create_test_objects(obj_dict):
elif obj_type == "Grid":
bpy.ops.mesh.primitive_grid_add(location=(0, offset_y, 0))
else:
- global flag
- flag = 1
- raise Exception("{} Object type not yet supported".format(obj_type))
+ global fail
+ fail = 1
+ raise Exception("'{}' object type not yet supported.".format(obj_type))
test_obj_list.append(test_obj_name)
bpy.context.active_object.name = test_obj_name
@@ -149,7 +160,7 @@ def create_test_objects(obj_dict):
else:
print("Object already present.")
- if not flag:
+ if not fail:
print("{} were successfully created!".format(test_obj_list))
@@ -157,8 +168,9 @@ argv = sys.argv
argv = argv[argv.index("--") + 1:]
# Converting the path to be platform independent and then into string
-path_to_file = str(Path(argv[0]))
-
+actual_path = Path(argv[0])
+path_to_file = str(actual_path)
+new_file = 0
print(path_to_file)
if os.path.exists(path_to_file):
@@ -166,16 +178,21 @@ if os.path.exists(path_to_file):
else:
- # Looking at the global flag variable
- if not flag:
- bpy.ops.wm.save_as_mainfile(filepath=path_to_file)
-
+ # Looking at the global fail variable
+ new_file = 1
+ bpy.ops.wm.save_as_mainfile(filepath=path_to_file)
# Cleaning up a new blend file
- bpy.ops.object.select_all(action='SELECT')
- bpy.ops.object.delete(use_global=False)
-
-create_test_objects({'Cube2': 'Cube', 'Cy2': "Cylinder"})
-
-create_vertex_group('expObjCube', "vg_solidify8", {1, 2, 3, 4}, True)
-
-bpy.ops.wm.save_mainfile(filepath=path_to_file)
+ bpy.data.objects['Light'].hide_set(True)
+ bpy.data.objects['Camera'].hide_set(True)
+
+# Function calls
+try:
+ create_test_objects({'Cube1': 'Cube', 'Cy455': "Cylinder"})
+ create_vertex_group('expObjCube', "vg_solidify", {0, 1, 2, 3}, False)
+finally:
+ if fail and new_file:
+ os.remove(path_to_file)
+ print("There was an error! The file is not created!")
+
+if not fail:
+ bpy.ops.wm.save_mainfile(filepath=path_to_file)
More information about the Bf-blender-cvs
mailing list