# HG changeset patch -- Bitbucket.org
# Project py-trunk
# URL http://bitbucket.org/hpk42/py-trunk/overview
# User holger krekel <hol...@merlinux.eu>
# Date 1274278943 -7200
# Node ID 40db2834509658ebb5c7c5881e7cc115fc14a1e3
# Parent  1940650af8d4761e9b36bb49bc99b57064fc2941
fix issue95 - treat a failing pytest_genscript import
as non-critical, give a hint.

--- a/testing/plugin/test_pytest_genscript.py
+++ b/testing/plugin/test_pytest_genscript.py
@@ -37,3 +37,4 @@ def test_rundist(testdir, pytestconfig, 
     result.stdout.fnmatch_lines([
         "*1 passed*",
     ])
+

--- a/py/_test/pluginmanager.py
+++ b/py/_test/pluginmanager.py
@@ -140,6 +140,13 @@ class PluginManager(object):
         except py.test.skip.Exception:
             e = py.std.sys.exc_info()[1]
             self._hints.append("skipped plugin %r: %s" %((modname, e.msg)))
+        except ImportError:
+            e = py.std.sys.exc_info()[1]
+            if "zlib" in str(e) and modname == "pytest_genscript":
+                self._hints.append("skipped plugin %r: failed to import %r" %(
+                    (modname, str(e))))
+            else:
+                raise
         else:
             check_old_use(mod, modname) 
             self.register(mod)

--- a/testing/test_pluginmanager.py
+++ b/testing/test_pluginmanager.py
@@ -489,3 +489,29 @@ class TestHookRelay:
         res = mcm.hello(arg=3)
         assert res == 4
 
+def test_pluginmanager_import_error_zlib(testdir):
+    p = testdir.makepyfile("""
+        try:
+            import builtins
+        except ImportError:
+            import __builtin__ as builtins
+        oldimport = builtins.__import__
+
+        def import_(name, *args):
+            #print "import", name, "start"
+            if name == "zlib":
+                raise ImportError("zlib")
+            mod = oldimport(name, *args)
+            #print "import", name, "successful"
+            return mod
+
+        if __name__ == "__main__":
+            builtins.__import__ = import_
+            import py
+            py.test.cmdline.main(["--traceconfig"])
+    """)
+    result = testdir.runpython(p)
+    result.stdout.fnmatch_lines([
+        "*skipped plugin*genscript*import*zlib*",
+    ])
+
_______________________________________________
py-svn mailing list
py-svn@codespeak.net
http://codespeak.net/mailman/listinfo/py-svn

Reply via email to