diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-09-23 13:37:47 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-09-23 13:37:47 +0400 |
commit | 2152b6fa41ec8e3e10b649cf40515bb5655ce4df (patch) | |
tree | a59f5e67c6940f42682157bd05dfadf38411839e | |
parent | c574419049f2ff7dfc558304ea9097dcf2a282c3 (diff) |
add more tests to run operators testing script
-rw-r--r-- | source/tests/bl_run_operators.py | 109 |
1 files changed, 90 insertions, 19 deletions
diff --git a/source/tests/bl_run_operators.py b/source/tests/bl_run_operators.py index 53cc37bc02b..146b60b8f28 100644 --- a/source/tests/bl_run_operators.py +++ b/source/tests/bl_run_operators.py @@ -44,7 +44,7 @@ op_blacklist = ( "help.operator_cheat_sheet", "wm.keyconfig_test", # just annoying - but harmless "wm.memory_statistics", # another annoying one - # "mesh.vertex_color_remove", #crashes! fixme + "console.*", # just annoying - but harmless ) @@ -61,7 +61,7 @@ def filter_op_list(operators): operators[:] = [op for op in operators if is_op_ok(op[0])] -def run_ops(operators, setup_func=None): +def run_ops(operators, setup_func=None, reset=True): print("\ncontext:", setup_func.__name__) # first invoke for op_id, op in operators: @@ -70,7 +70,8 @@ def run_ops(operators, setup_func=None): sys.stdout.flush() # in case of crash # disable will get blender in a bad state and crash easy! - bpy.ops.wm.read_factory_settings() + if reset: + bpy.ops.wm.read_factory_settings() setup_func() @@ -82,6 +83,11 @@ def run_ops(operators, setup_func=None): #traceback.print_exc() pass + if not operators: + # run test + if reset: + bpy.ops.wm.read_factory_settings() + setup_func() # contexts def ctx_clear_scene(): # copied from batch_import.py @@ -99,7 +105,23 @@ def ctx_clear_scene(): # copied from batch_import.py def ctx_editmode_mesh(): bpy.ops.object.mode_set(mode='EDIT') + + +def ctx_editmode_mesh_extra(): bpy.ops.object.vertex_group_add() + bpy.ops.object.shape_key_add(from_mix=False) + bpy.ops.object.shape_key_add(from_mix=True) + bpy.ops.mesh.uv_texture_add() + bpy.ops.mesh.vertex_color_add() + bpy.ops.object.material_slot_add() + # editmode last! + bpy.ops.object.mode_set(mode='EDIT') + + +def ctx_editmode_mesh_empty(): + bpy.ops.object.mode_set(mode='EDIT') + bpy.ops.mesh.select_all(action='SELECT') + bpy.ops.mesh.delete() def ctx_editmode_curves(): @@ -107,6 +129,12 @@ def ctx_editmode_curves(): bpy.ops.object.mode_set(mode='EDIT') +def ctx_editmode_curves_empty(): + bpy.ops.curve.primitive_nurbs_circle_add() + bpy.ops.object.mode_set(mode='EDIT') + bpy.ops.curve.delete(type='ALL') + + def ctx_editmode_surface(): bpy.ops.surface.primitive_nurbs_surface_torus_add() bpy.ops.object.mode_set(mode='EDIT') @@ -127,6 +155,13 @@ def ctx_editmode_armature(): bpy.ops.object.mode_set(mode='EDIT') +def ctx_editmode_armature_empty(): + bpy.ops.object.armature_add() + bpy.ops.object.mode_set(mode='EDIT') + bpy.ops.armature.select_all(action='SELECT') + bpy.ops.armature.delete() + + def ctx_editmode_lattice(): bpy.ops.object.add(type='LATTICE') bpy.ops.object.mode_set(mode='EDIT') @@ -137,10 +172,28 @@ def ctx_object_empty(): bpy.ops.object.add(type='EMPTY') -def ctx_weightpaint(): +def ctx_object_pose(): + bpy.ops.object.armature_add() + bpy.ops.object.mode_set(mode='POSE') + bpy.ops.pose.select_all(action='SELECT') + + +def ctx_object_paint_weight(): bpy.ops.object.mode_set(mode='WEIGHT_PAINT') +def ctx_object_paint_vertex(): + bpy.ops.object.mode_set(mode='VERTEX_PAINT') + + +def ctx_object_paint_sculpt(): + bpy.ops.object.mode_set(mode='SCULPT') + + +def ctx_object_paint_texture(): + bpy.ops.object.mode_set(mode='TEXTURE_PAINT') + + def bpy_check_type_duplicates(): # non essential sanity check bl_types = dir(bpy.types) @@ -178,21 +231,39 @@ def main(): #import random #random.shuffle(operators) - - # Run the operator tests in different contexts - run_ops(operators, setup_func=lambda: None) - run_ops(operators, setup_func=ctx_editmode_surface) - run_ops(operators, setup_func=ctx_object_empty) - run_ops(operators, setup_func=ctx_editmode_armature) - run_ops(operators, setup_func=ctx_editmode_mesh) - run_ops(operators, setup_func=ctx_clear_scene) - run_ops(operators, setup_func=ctx_editmode_curves) - run_ops(operators, setup_func=ctx_editmode_mball) - run_ops(operators, setup_func=ctx_editmode_text) - run_ops(operators, setup_func=ctx_weightpaint) - run_ops(operators, setup_func=ctx_editmode_lattice) - - print("finished") + + # 2 passes, first just run setup_func to make sure they are ok + for operators_test in ((), operators): + # Run the operator tests in different contexts + run_ops(operators_test, setup_func=lambda: None) + run_ops(operators_test, setup_func=ctx_clear_scene) + # object modes + run_ops(operators_test, setup_func=ctx_object_empty) + run_ops(operators_test, setup_func=ctx_object_pose) + run_ops(operators_test, setup_func=ctx_object_paint_weight) + run_ops(operators_test, setup_func=ctx_object_paint_vertex) + run_ops(operators_test, setup_func=ctx_object_paint_sculpt) + run_ops(operators_test, setup_func=ctx_object_paint_texture) + # mesh + run_ops(operators_test, setup_func=ctx_editmode_mesh) + run_ops(operators_test, setup_func=ctx_editmode_mesh_extra) + run_ops(operators_test, setup_func=ctx_editmode_mesh_empty) + # armature + run_ops(operators_test, setup_func=ctx_editmode_armature) + run_ops(operators_test, setup_func=ctx_editmode_armature_empty) + # curves + run_ops(operators_test, setup_func=ctx_editmode_curves) + run_ops(operators_test, setup_func=ctx_editmode_curves_empty) + run_ops(operators_test, setup_func=ctx_editmode_surface) + # other + run_ops(operators_test, setup_func=ctx_editmode_mball) + run_ops(operators_test, setup_func=ctx_editmode_text) + run_ops(operators_test, setup_func=ctx_editmode_lattice) + + if not operators_test: + print("All setup functions run fine!") + + print("Finished %r" % __file__) if __name__ == "__main__": main() |