Merge branch 'master' into blender2.8
[blender.git] / tests / python / bl_load_py_modules.py
index 7ffececd1d9bc6631bb587227b41f122b0f55410..b7b0db76b6308c7d5b173b94b017887f521df01f 100644 (file)
@@ -39,20 +39,20 @@ BLACKLIST = {
 
     # The unpacked wheel is only loaded when actually used, not directly on import:
     os.path.join("io_blend_utils", "blender_bam-unpacked.whl"),
-    }
+}
 
 # Some modules need to add to the `sys.path`.
 MODULE_SYS_PATHS = {
     # Runs in a Python subprocess, so its expected its basedir can be imported.
     "io_blend_utils.blendfile_pack": ".",
-    }
+}
 
 if not bpy.app.build_options.freestyle:
     BLACKLIST.add("render_freestyle_svg")
 
 BLACKLIST_DIRS = (
     os.path.join(bpy.utils.resource_path('USER'), "scripts"),
-    ) + tuple(addon_utils.paths()[1:])
+) + tuple(addon_utils.paths()[1:])
 
 
 def module_names_recursive(mod_dir, *, parent=None):
@@ -93,9 +93,8 @@ def addon_modules_sorted():
 def source_list(path, filename_check=None):
     from os.path import join
     for dirpath, dirnames, filenames in os.walk(path):
-        # skip '.svn'
-        if dirpath.startswith("."):
-            continue
+        # skip '.git'
+        dirnames[:] = [d for d in dirnames if not d.startswith(".")]
 
         for filename in filenames:
             filepath = join(dirpath, filename)
@@ -123,6 +122,8 @@ def load_addons():
 
 
 def load_modules():
+    VERBOSE = os.environ.get("BLENDER_VERBOSE") is not None
+
     modules = []
     module_paths = []
 
@@ -161,6 +162,14 @@ def load_modules():
             module_names[mod] = mod_dir, mod_full
     del module_names
 
+    #
+    # test we tested all files except for presets and templates
+    ignore_paths = [
+        os.sep + "presets" + os.sep,
+        os.sep + "templates" + os.sep,
+    ] + ([(os.sep + f + os.sep) for f in BLACKLIST] +
+         [(os.sep + f + ".py") for f in BLACKLIST])
+
     #
     # now submodules
     for m in modules:
@@ -176,7 +185,7 @@ def load_modules():
                 sys.path.extend([
                     os.path.normpath(os.path.join(mod_dir, f))
                     for f in MODULE_SYS_PATHS.get(mod_name_full, ())
-                    ])
+                ])
 
                 try:
                     __import__(mod_name_full)
@@ -188,7 +197,7 @@ def load_modules():
                     assert(os.path.samefile(mod_imp.__file__, submod_full))
 
                     modules.append(mod_imp)
-                except Exception as e:
+                except Exception:
                     import traceback
                     # Module might fail to import, but we don't want whole test to fail here.
                     # Reasoning:
@@ -199,7 +208,14 @@ def load_modules():
                     #   import failure.
                     # - We want to catch all failures of this script instead of stopping on
                     #   a first big failure.
-                    traceback.print_exc()
+                    do_print = True
+                    if not VERBOSE:
+                        for ignore in ignore_paths:
+                            if ignore in submod_full:
+                                do_print = False
+                                break
+                    if do_print:
+                        traceback.print_exc()
 
     #
     # check which filepaths we didn't load
@@ -218,14 +234,6 @@ def load_modules():
     for f in loaded_files:
         source_files.remove(f)
 
-    #
-    # test we tested all files except for presets and templates
-    ignore_paths = [
-        os.sep + "presets" + os.sep,
-        os.sep + "templates" + os.sep,
-    ] + ([(os.sep + f + os.sep) for f in BLACKLIST] +
-         [(os.sep + f + ".py")  for f in BLACKLIST])
-
     for f in source_files:
         for ignore in ignore_paths:
             if ignore in f:
@@ -240,6 +248,7 @@ def main():
     load_addons()
     load_modules()
 
+
 if __name__ == "__main__":
     # So a python error exits(1)
     try: