revert 1735 - fix issue95 differently: just shift the offending zlib

import (and others) to happen when they are actually needed

--HG--
branch : trunk
This commit is contained in:
holger krekel 2010-05-19 16:42:22 +02:00
parent c3bd29b490
commit 2229d2d947
5 changed files with 10 additions and 41 deletions

View File

@ -6,6 +6,9 @@ Changes between 1.3.0 and 1.3.1
to the underlying capturing functionality to avoid race
conditions).
- fix issue95: late-import zlib so that it's not required
for general py.test startup.
- make py.test.cmdline.main() return the exitstatus
instead of raising (which is still done by py.cmdline.pytest())
and make it so that py.test.cmdline.main() can be called

View File

@ -4,14 +4,7 @@ generate standalone test script to be distributed along with an application.
"""
import os
import zlib
import base64
import sys
try:
import pickle
except Importerror:
import cPickle as pickle
def pytest_addoption(parser):
group = parser.getgroup("debugconfig")
group.addoption("--genscript", action="store", default=None,
@ -30,6 +23,13 @@ def pytest_configure(config):
raise SystemExit(0)
def main(pybasedir, outfile, infile):
import base64
import zlib
try:
import pickle
except Importerror:
import cPickle as pickle
outfile = str(outfile)
infile = str(infile)
assert os.path.isabs(outfile)

View File

@ -140,13 +140,6 @@ 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)

View File

@ -37,4 +37,3 @@ def test_rundist(testdir, pytestconfig, standalone):
result.stdout.fnmatch_lines([
"*1 passed*",
])

View File

@ -489,29 +489,3 @@ 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*",
])