Author: rjollos
Date: Tue Nov  5 19:06:24 2013
New Revision: 1539101

URL: http://svn.apache.org/r1539101
Log:
0.8dev: Log import errors when discovering test packages. Refs #707.

Patch by Olemis Lang.

Modified:
    bloodhound/trunk/bloodhound_multiproduct/tests/__init__.py

Modified: bloodhound/trunk/bloodhound_multiproduct/tests/__init__.py
URL: 
http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_multiproduct/tests/__init__.py?rev=1539101&r1=1539100&r2=1539101&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_multiproduct/tests/__init__.py (original)
+++ bloodhound/trunk/bloodhound_multiproduct/tests/__init__.py Tue Nov  5 
19:06:24 2013
@@ -16,6 +16,7 @@
 #  specific language governing permissions and limitations
 #  under the License.
 
+import logging
 import sys
 from collections import deque
 from fnmatch import fnmatch
@@ -50,12 +51,18 @@ class TestLoader(unittest.TestLoader):
         """
         pending = deque([(package_or_requirement, self, True)])
         tests = []
+        log = logging.getLogger('bh.tests')
+        if len(log.handlers) == 0:
+            # Configure logger instance. otherwise messages won't be displayed
+            _configure_logger(log)
         while pending:
             mdlnm, loader, isdir = pending.popleft()
             try:
                 mdl = self._get_module_from_name(mdlnm)
             except (ImportError, ValueError):
-                # Skip packages not having __init__.py
+                # Log import error and skip packages that don't import
+                log.exception('Discovered package %s but import failed',
+                              mdlnm)
                 continue
             loader = getattr(mdl, self.testLoaderAttribute, None) or loader
             if not (isdir and ignore_subpkg_root):
@@ -84,6 +91,14 @@ class TestLoader(unittest.TestLoader):
         return sys.modules[name]
 
 
+def _configure_logger(log):
+    # See logging.basicConfig
+    handler = logging.StreamHandler()
+    formatter = logging.Formatter(logging.BASIC_FORMAT, None)
+    handler.setFormatter(formatter)
+    log.addHandler(handler)
+
+
 def test_suite():
     return TestLoader().discover_package('tests', pattern='*.py',
                                          exclude='*/functional/*')


Reply via email to