diff options
Diffstat (limited to 'source/tests/bl_load_addons.py')
-rw-r--r-- | source/tests/bl_load_addons.py | 45 |
1 files changed, 39 insertions, 6 deletions
diff --git a/source/tests/bl_load_addons.py b/source/tests/bl_load_addons.py index 5d9ac750362..83bdfb42c95 100644 --- a/source/tests/bl_load_addons.py +++ b/source/tests/bl_load_addons.py @@ -27,16 +27,46 @@ import sys import imp -def reload_addons(do_reload=True, do_reverse=True): +def disable_addons(): + # first disable all + addons = bpy.context.user_preferences.addons + for mod_name in list(addons.keys()): + addon_utils.disable(mod_name) + assert(bool(addons) is False) + + +def test_load_addons(): modules = addon_utils.modules({}) modules.sort(key=lambda mod: mod.__name__) + + disable_addons() + addons = bpy.context.user_preferences.addons - # first disable all - for mod_name in list(addons.keys()): - addon_utils.disable(mod_name) + addons_fail = [] - assert(bool(addons) is False) + for mod in modules: + mod_name = mod.__name__ + print("\tenabling:", mod_name) + addon_utils.enable(mod_name) + if mod_name not in addons: + addons_fail.append(mod_name) + + if addons_fail: + print("addons failed to load (%d):" % len(addons_fail)) + for mod_name in addons_fail: + print(" %s" % mod_name) + else: + print("addons all loaded without errors!") + print("") + + +def reload_addons(do_reload=True, do_reverse=True): + modules = addon_utils.modules({}) + modules.sort(key=lambda mod: mod.__name__) + addons = bpy.context.user_preferences.addons + + disable_addons() # Run twice each time. for i in (0, 1): @@ -57,11 +87,14 @@ def reload_addons(do_reload=True, do_reverse=True): imp.reload(sys.modules[mod_name]) if do_reverse: - # in case order matters when it shouldnt + # in case order matters when it shouldn't modules.reverse() def main(): + # first load addons, print a list of all addons that fail + test_load_addons() + reload_addons(do_reload=False, do_reverse=False) reload_addons(do_reload=False, do_reverse=True) reload_addons(do_reload=True, do_reverse=True) |