diff --git a/py/impl/test/conftesthandle.py b/py/impl/test/conftesthandle.py index f6139db67..1c01e310d 100644 --- a/py/impl/test/conftesthandle.py +++ b/py/impl/test/conftesthandle.py @@ -1,19 +1,17 @@ import py -defaultconftestpath = py.path.local(__file__).dirpath("defaultconftest.py") +from py.impl.test import defaultconftest class Conftest(object): """ the single place for accessing values and interacting towards conftest modules from py.test objects. + (deprecated) Note that triggering Conftest instances to import conftest.py files may result in added cmdline options. - XXX """ - def __init__(self, path=None, onimport=None): + def __init__(self, onimport=None): self._path2confmods = {} self._onimport = onimport - if path is not None: - self.setinitial([path]) def setinitial(self, args): """ try to find a first anchor path for looking up global values @@ -42,17 +40,13 @@ class Conftest(object): raise ValueError("missing default conftest.") dp = path.dirpath() if dp == path: - if not defaultconftestpath.check(): # zip file, single-file py.test? - import defaultconftest - if self._onimport: - self._onimport(defaultconftest) - return [defaultconftest] - return [self.importconftest(defaultconftestpath)] - clist = self.getconftestmodules(dp) - conftestpath = path.join("conftest.py") - if conftestpath.check(file=1): - clist.append(self.importconftest(conftestpath)) - self._path2confmods[path] = clist + clist = [self._postimport(defaultconftest)] + else: + clist = self.getconftestmodules(dp) + conftestpath = path.join("conftest.py") + if conftestpath.check(file=1): + clist.append(self.importconftest(conftestpath)) + self._path2confmods[path] = clist # be defensive: avoid changes from caller side to # affect us by always returning a copy of the actual list return clist[:] @@ -82,6 +76,9 @@ class Conftest(object): mod = conftestpath.pyimport(modname=modname) else: mod = conftestpath.pyimport() + return self._postimport(mod) + + def _postimport(self, mod): if self._onimport: self._onimport(mod) return mod diff --git a/testing/pytest/test_conftesthandle.py b/testing/pytest/test_conftesthandle.py index bd476bca3..1d1038510 100644 --- a/testing/pytest/test_conftesthandle.py +++ b/testing/pytest/test_conftesthandle.py @@ -17,6 +17,11 @@ def pytest_funcarg__basedir(request): return d return request.cached_setup(lambda: basedirmaker(request), extrakey=request.param) +def ConftestWithSetinitial(path): + conftest = Conftest() + conftest.setinitial([path]) + return conftest + class TestConftestValueAccessGlobal: def test_basic_init(self, basedir): conftest = Conftest() @@ -45,22 +50,22 @@ class TestConftestValueAccessGlobal: def test_default_Module_setting_is_visible_always(self, basedir): for path in basedir.parts(): - conftest = Conftest(path) + conftest = ConftestWithSetinitial(path) #assert conftest.lget("Module") == py.test.collect.Module assert conftest.rget("Module") == py.test.collect.Module def test_default_has_lower_prio(self, basedir): - conftest = Conftest(basedir.join("adir")) + conftest = ConftestWithSetinitial(basedir.join("adir")) assert conftest.rget('Directory') == 3 #assert conftest.lget('Directory') == py.test.collect.Directory def test_value_access_not_existing(self, basedir): - conftest = Conftest(basedir) + conftest = ConftestWithSetinitial(basedir) py.test.raises(KeyError, "conftest.rget('a')") #py.test.raises(KeyError, "conftest.lget('a')") def test_value_access_by_path(self, basedir): - conftest = Conftest(basedir) + conftest = ConftestWithSetinitial(basedir) assert conftest.rget("a", basedir.join('adir')) == 1 #assert conftest.lget("a", basedir.join('adir')) == 1 assert conftest.rget("a", basedir.join('adir', 'b')) == 1.5 @@ -71,12 +76,12 @@ class TestConftestValueAccessGlobal: #) def test_value_access_with_init_one_conftest(self, basedir): - conftest = Conftest(basedir.join('adir')) + conftest = ConftestWithSetinitial(basedir.join('adir')) assert conftest.rget("a") == 1 #assert conftest.lget("a") == 1 def test_value_access_with_init_two_conftests(self, basedir): - conftest = Conftest(basedir.join("adir", "b")) + conftest = ConftestWithSetinitial(basedir.join("adir", "b")) conftest.rget("a") == 1.5 #conftest.lget("a") == 1 #conftest.lget("b") == 1 @@ -84,7 +89,7 @@ class TestConftestValueAccessGlobal: def test_value_access_with_confmod(self, basedir): topdir = basedir.join("adir", "b") topdir.ensure("xx", dir=True) - conftest = Conftest(topdir) + conftest = ConftestWithSetinitial(topdir) mod, value = conftest.rget_with_confmod("a", topdir) assert value == 1.5 path = py.path.local(mod.__file__)