fixes #3
added tests and fix for early parsing of "-p" option --HG-- branch : trunk
This commit is contained in:
parent
3a9d2873b5
commit
c8de661ef6
|
@ -76,6 +76,7 @@ class Config(object):
|
|||
|
||||
def _preparse(self, args):
|
||||
self._conftest.setinitial(args)
|
||||
self.pluginmanager.consider_preparse(args)
|
||||
self.pluginmanager.consider_env()
|
||||
self.pluginmanager.do_addoption(self._parser)
|
||||
|
||||
|
|
|
@ -47,6 +47,11 @@ class PluginManager(object):
|
|||
for spec in self._envlist("PYTEST_PLUGINS"):
|
||||
self.import_plugin(spec)
|
||||
|
||||
def consider_preparse(self, args):
|
||||
for opt1,opt2 in zip(args, args[1:]):
|
||||
if opt1 == "-p":
|
||||
self.import_plugin(opt2)
|
||||
|
||||
def consider_conftest(self, conftestmodule):
|
||||
cls = getattr(conftestmodule, 'ConftestPlugin', None)
|
||||
if cls is not None and cls not in self.impname2plugin:
|
||||
|
|
|
@ -17,6 +17,23 @@ class TestGeneralUsage:
|
|||
'*ERROR: hello'
|
||||
])
|
||||
|
||||
def test_config_preparse_plugin_option(self, testdir):
|
||||
testdir.makepyfile(pytest_xyz="""
|
||||
class XyzPlugin:
|
||||
def pytest_addoption(self, parser):
|
||||
parser.addoption("--xyz", dest="xyz", action="store")
|
||||
""")
|
||||
testdir.makepyfile(test_one="""
|
||||
import py
|
||||
def test_option():
|
||||
assert py.test.config.option.xyz == "123"
|
||||
""")
|
||||
result = testdir.runpytest("-p", "xyz", "--xyz=123")
|
||||
assert result.ret == 0
|
||||
assert result.stdout.fnmatch_lines([
|
||||
'*1 passed*',
|
||||
])
|
||||
|
||||
def test_basetemp(self, testdir):
|
||||
mytemp = testdir.tmpdir.mkdir("mytemp")
|
||||
p = testdir.makepyfile("""
|
||||
|
|
|
@ -8,6 +8,12 @@ class TestBootstrapping:
|
|||
monkeypatch.setitem(os.environ, 'PYTEST_PLUGINS', 'nonexistingmodule')
|
||||
py.test.raises(ImportError, "pluginmanager.consider_env()")
|
||||
|
||||
def test_preparse_args(self, monkeypatch):
|
||||
pluginmanager = PluginManager()
|
||||
py.test.raises(ImportError, """
|
||||
pluginmanager.consider_preparse(["xyz", "-p", "hello123"])
|
||||
""")
|
||||
|
||||
def test_consider_env_plugin_instantiation(self, testdir, monkeypatch):
|
||||
pluginmanager = PluginManager()
|
||||
testdir.syspathinsert()
|
||||
|
|
Loading…
Reference in New Issue