Merged in hpk42/pytest-hpk/conftest-clean (pull request #148)
cleanup internal conftest handling and avoid the strange None entry in the conftest cache.
This commit is contained in:
@@ -89,20 +89,6 @@ class TestConfigAPI:
|
||||
assert len(l) == 1
|
||||
assert l[0] == "hello [config]\n"
|
||||
|
||||
def test_config_getvalue_honours_conftest(self, testdir):
|
||||
testdir.makepyfile(conftest="x=1")
|
||||
testdir.mkdir("sub").join("conftest.py").write("x=2 ; y = 3")
|
||||
config = testdir.parseconfig()
|
||||
o = testdir.tmpdir
|
||||
assert config.getvalue("x") == 1
|
||||
assert config.getvalue("x", o.join('sub')) == 2
|
||||
pytest.raises(KeyError, "config.getvalue('y')")
|
||||
config = testdir.parseconfigure(str(o.join('sub')))
|
||||
assert config.getvalue("x") == 2
|
||||
assert config.getvalue("y") == 3
|
||||
assert config.getvalue("x", o) == 1
|
||||
pytest.raises(KeyError, 'config.getvalue("y", o)')
|
||||
|
||||
def test_config_getoption(self, testdir):
|
||||
testdir.makeconftest("""
|
||||
def pytest_addoption(parser):
|
||||
@@ -130,34 +116,20 @@ class TestConfigAPI:
|
||||
"config.getvalueorskip('hello')")
|
||||
verbose = config.getvalueorskip("verbose")
|
||||
assert verbose == config.option.verbose
|
||||
config.option.hello = None
|
||||
try:
|
||||
config.getvalueorskip('hello')
|
||||
except KeyboardInterrupt:
|
||||
raise
|
||||
except:
|
||||
excinfo = py.code.ExceptionInfo()
|
||||
frame = excinfo.traceback[-2].frame
|
||||
assert frame.code.name == "getvalueorskip"
|
||||
assert frame.eval("__tracebackhide__")
|
||||
|
||||
def test_config_overwrite(self, testdir):
|
||||
o = testdir.tmpdir
|
||||
o.ensure("conftest.py").write("x=1")
|
||||
config = testdir.parseconfig(str(o))
|
||||
assert config.getvalue('x') == 1
|
||||
config.option.x = 2
|
||||
assert config.getvalue('x') == 2
|
||||
config = testdir.parseconfig(str(o))
|
||||
assert config.getvalue('x') == 1
|
||||
def test_getoption(self, testdir):
|
||||
config = testdir.parseconfig()
|
||||
with pytest.raises(ValueError):
|
||||
config.getvalue('x')
|
||||
assert config.getoption("x", 1) == 1
|
||||
|
||||
def test_getconftest_pathlist(self, testdir, tmpdir):
|
||||
somepath = tmpdir.join("x", "y", "z")
|
||||
p = tmpdir.join("conftest.py")
|
||||
p.write("pathlist = ['.', %r]" % str(somepath))
|
||||
config = testdir.parseconfigure(p)
|
||||
assert config._getconftest_pathlist('notexist') is None
|
||||
pl = config._getconftest_pathlist('pathlist')
|
||||
assert config._getconftest_pathlist('notexist', path=tmpdir) is None
|
||||
pl = config._getconftest_pathlist('pathlist', path=tmpdir)
|
||||
print(pl)
|
||||
assert len(pl) == 2
|
||||
assert pl[0] == tmpdir
|
||||
|
||||
@@ -1,22 +1,17 @@
|
||||
import py, pytest
|
||||
from _pytest.config import Conftest
|
||||
|
||||
def pytest_generate_tests(metafunc):
|
||||
if "basedir" in metafunc.fixturenames:
|
||||
metafunc.addcall(param="global")
|
||||
metafunc.addcall(param="inpackage")
|
||||
|
||||
def pytest_funcarg__basedir(request):
|
||||
def basedirmaker(request):
|
||||
d = request.getfuncargvalue("tmpdir")
|
||||
d.ensure("adir/conftest.py").write("a=1 ; Directory = 3")
|
||||
d.ensure("adir/b/conftest.py").write("b=2 ; a = 1.5")
|
||||
if request.param == "inpackage":
|
||||
d.ensure("adir/__init__.py")
|
||||
d.ensure("adir/b/__init__.py")
|
||||
return d
|
||||
return request.cached_setup(
|
||||
lambda: basedirmaker(request), extrakey=request.param)
|
||||
@pytest.fixture(scope="module", params=["global", "inpackage"])
|
||||
def basedir(request):
|
||||
from _pytest.tmpdir import tmpdir
|
||||
tmpdir = tmpdir(request)
|
||||
tmpdir.ensure("adir/conftest.py").write("a=1 ; Directory = 3")
|
||||
tmpdir.ensure("adir/b/conftest.py").write("b=2 ; a = 1.5")
|
||||
if request.param == "inpackage":
|
||||
tmpdir.ensure("adir/__init__.py")
|
||||
tmpdir.ensure("adir/b/__init__.py")
|
||||
return tmpdir
|
||||
|
||||
def ConftestWithSetinitial(path):
|
||||
conftest = Conftest()
|
||||
@@ -33,17 +28,17 @@ def conftest_setinitial(conftest, args, confcutdir=None):
|
||||
class TestConftestValueAccessGlobal:
|
||||
def test_basic_init(self, basedir):
|
||||
conftest = Conftest()
|
||||
conftest_setinitial(conftest, [basedir.join("adir")])
|
||||
assert conftest.rget("a") == 1
|
||||
p = basedir.join("adir")
|
||||
assert conftest.rget_with_confmod("a", p)[1] == 1
|
||||
|
||||
def test_onimport(self, basedir):
|
||||
l = []
|
||||
conftest = Conftest(onimport=l.append)
|
||||
conftest_setinitial(conftest, [basedir.join("adir"),
|
||||
'--confcutdir=%s' % basedir])
|
||||
adir = basedir.join("adir")
|
||||
conftest_setinitial(conftest, [adir], confcutdir=basedir)
|
||||
assert len(l) == 1
|
||||
assert conftest.rget("a") == 1
|
||||
assert conftest.rget("b", basedir.join("adir", "b")) == 2
|
||||
assert conftest.rget_with_confmod("a", adir)[1] == 1
|
||||
assert conftest.rget_with_confmod("b", adir.join("b"))[1] == 2
|
||||
assert len(l) == 2
|
||||
|
||||
def test_immediate_initialiation_and_incremental_are_the_same(self, basedir):
|
||||
@@ -57,37 +52,16 @@ class TestConftestValueAccessGlobal:
|
||||
conftest.getconftestmodules(basedir.join('b'))
|
||||
assert len(conftest._path2confmods) == snap1 + 2
|
||||
|
||||
def test_default_has_lower_prio(self, basedir):
|
||||
conftest = ConftestWithSetinitial(basedir.join("adir"))
|
||||
assert conftest.rget('Directory') == 3
|
||||
#assert conftest.lget('Directory') == pytest.Directory
|
||||
|
||||
def test_value_access_not_existing(self, basedir):
|
||||
conftest = ConftestWithSetinitial(basedir)
|
||||
pytest.raises(KeyError, lambda: conftest.rget('a'))
|
||||
#pytest.raises(KeyError, "conftest.lget('a')")
|
||||
with pytest.raises(KeyError):
|
||||
conftest.rget_with_confmod('a', basedir)
|
||||
|
||||
def test_value_access_by_path(self, 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
|
||||
#assert conftest.lget("a", basedir.join('adir', 'b')) == 1
|
||||
#assert conftest.lget("b", basedir.join('adir', 'b')) == 2
|
||||
#assert pytest.raises(KeyError,
|
||||
# 'conftest.lget("b", basedir.join("a"))'
|
||||
#)
|
||||
|
||||
def test_value_access_with_init_one_conftest(self, basedir):
|
||||
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 = ConftestWithSetinitial(basedir.join("adir", "b"))
|
||||
conftest.rget("a") == 1.5
|
||||
#conftest.lget("a") == 1
|
||||
#conftest.lget("b") == 1
|
||||
adir = basedir.join("adir")
|
||||
assert conftest.rget_with_confmod("a", adir)[1] == 1
|
||||
assert conftest.rget_with_confmod("a", adir.join("b"))[1] == 1.5
|
||||
|
||||
def test_value_access_with_confmod(self, basedir):
|
||||
startdir = basedir.join("adir", "b")
|
||||
@@ -111,7 +85,7 @@ def test_doubledash_considered(testdir):
|
||||
conf.join("conftest.py").ensure()
|
||||
conftest = Conftest()
|
||||
conftest_setinitial(conftest, [conf.basename, conf.basename])
|
||||
l = conftest.getconftestmodules(None)
|
||||
l = conftest.getconftestmodules(conf)
|
||||
assert len(l) == 1
|
||||
|
||||
def test_issue151_load_all_conftests(testdir):
|
||||
|
||||
Reference in New Issue
Block a user