Skip to content

Commit 9f8163a

Browse files
committed
Fix tests due to change in conftest-collect methods
1 parent 110908b commit 9f8163a

File tree

7 files changed

+45
-40
lines changed

7 files changed

+45
-40
lines changed

src/_pytest/doctest.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,9 @@ def _find(
478478
)
479479

480480
if self.fspath.basename == "conftest.py":
481-
module = self.config.pluginmanager._importconftest(self.fspath)
481+
module = self.config.pluginmanager._importconftest(
482+
self.fspath, self.config.getoption("importmode")
483+
)
482484
else:
483485
try:
484486
module = import_module(self.fspath)

src/_pytest/main.py

+8
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,14 @@ def pytest_addoption(parser):
161161
default=False,
162162
help="Don't ignore tests in a local virtualenv directory",
163163
)
164+
group.addoption(
165+
"--import-mode",
166+
default="prepend",
167+
choices=["prepend", "append", "importlib"],
168+
dest="importmode",
169+
help="prepend/append to sys.path when importing test modules and conftest files, "
170+
"default is to prepend.",
171+
)
164172

165173
group = parser.getgroup("debugconfig", "test session debugging and configuration")
166174
group.addoption(

src/_pytest/python.py

-9
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,6 @@ def pytest_addoption(parser):
103103
"side effects(use at your own risk)",
104104
)
105105

106-
group.addoption(
107-
"--import-mode",
108-
default="prepend",
109-
choices=["prepend", "append", "importlib"],
110-
dest="importmode",
111-
help="prepend/append to sys.path when importing test modules, "
112-
"default is to prepend.",
113-
)
114-
115106

116107
def pytest_cmdline_main(config):
117108
if config.option.showfixtures:

testing/python/collect.py

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import os
21
import sys
32
import textwrap
43

@@ -107,11 +106,10 @@ def test_show_traceback_import_error(self, testdir, verbose):
107106
assert result.ret == 2
108107

109108
stdout = result.stdout.str()
110-
for name in ("_pytest", os.path.join("py", "_path")):
111-
if verbose == 2:
112-
assert name in stdout
113-
else:
114-
assert name not in stdout
109+
if verbose == 2:
110+
assert "_pytest" in stdout
111+
else:
112+
assert "_pytest" not in stdout
115113

116114
def test_show_traceback_import_error_unicode(self, testdir):
117115
"""Check test modules collected which raise ImportError with unicode messages

testing/python/fixtures.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -1894,7 +1894,9 @@ def test_2(self):
18941894
reprec = testdir.inline_run("-v", "-s", confcut)
18951895
reprec.assertoutcome(passed=8)
18961896
config = reprec.getcalls("pytest_unconfigure")[0].config
1897-
values = config.pluginmanager._getconftestmodules(p)[0].values
1897+
values = config.pluginmanager._getconftestmodules(p, importmode="prepend")[
1898+
0
1899+
].values
18981900
assert values == ["fin_a1", "fin_a2", "fin_b1", "fin_b2"] * 2
18991901

19001902
def test_scope_ordering(self, testdir):

testing/test_conftest.py

+23-19
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ def __init__(self):
2222
self.confcutdir = str(confcutdir)
2323
self.noconftest = False
2424
self.pyargs = False
25+
self.importmode = "prepend"
2526

2627
conftest._set_initial_conftests(Namespace())
2728

@@ -42,35 +43,38 @@ def basedir(self, request, tmpdir_factory):
4243
def test_basic_init(self, basedir):
4344
conftest = PytestPluginManager()
4445
p = basedir.join("adir")
45-
assert conftest._rget_with_confmod("a", p)[1] == 1
46+
assert conftest._rget_with_confmod("a", p, importmode="prepend")[1] == 1
4647

4748
def test_immediate_initialiation_and_incremental_are_the_same(self, basedir):
4849
conftest = PytestPluginManager()
4950
assert not len(conftest._dirpath2confmods)
50-
conftest._getconftestmodules(basedir)
51+
conftest._getconftestmodules(basedir, importmode="prepend")
5152
snap1 = len(conftest._dirpath2confmods)
5253
assert snap1 == 1
53-
conftest._getconftestmodules(basedir.join("adir"))
54+
conftest._getconftestmodules(basedir.join("adir"), importmode="prepend")
5455
assert len(conftest._dirpath2confmods) == snap1 + 1
55-
conftest._getconftestmodules(basedir.join("b"))
56+
conftest._getconftestmodules(basedir.join("b"), importmode="prepend")
5657
assert len(conftest._dirpath2confmods) == snap1 + 2
5758

5859
def test_value_access_not_existing(self, basedir):
5960
conftest = ConftestWithSetinitial(basedir)
6061
with pytest.raises(KeyError):
61-
conftest._rget_with_confmod("a", basedir)
62+
conftest._rget_with_confmod("a", basedir, importmode="prepend")
6263

6364
def test_value_access_by_path(self, basedir):
6465
conftest = ConftestWithSetinitial(basedir)
6566
adir = basedir.join("adir")
66-
assert conftest._rget_with_confmod("a", adir)[1] == 1
67-
assert conftest._rget_with_confmod("a", adir.join("b"))[1] == 1.5
67+
assert conftest._rget_with_confmod("a", adir, importmode="prepend")[1] == 1
68+
assert (
69+
conftest._rget_with_confmod("a", adir.join("b"), importmode="prepend")[1]
70+
== 1.5
71+
)
6872

6973
def test_value_access_with_confmod(self, basedir):
7074
startdir = basedir.join("adir", "b")
7175
startdir.ensure("xx", dir=True)
7276
conftest = ConftestWithSetinitial(startdir)
73-
mod, value = conftest._rget_with_confmod("a", startdir)
77+
mod, value = conftest._rget_with_confmod("a", startdir, importmode="prepend")
7478
assert value == 1.5
7579
path = py.path.local(mod.__file__)
7680
assert path.dirpath() == basedir.join("adir", "b")
@@ -90,7 +94,7 @@ def test_doubledash_considered(testdir):
9094
conf.ensure("conftest.py")
9195
conftest = PytestPluginManager()
9296
conftest_setinitial(conftest, [conf.basename, conf.basename])
93-
values = conftest._getconftestmodules(conf)
97+
values = conftest._getconftestmodules(conf, importmode="prepend")
9498
assert len(values) == 1
9599

96100

@@ -113,13 +117,13 @@ def test_conftest_global_import(testdir):
113117
import py, pytest
114118
from _pytest.config import PytestPluginManager
115119
conf = PytestPluginManager()
116-
mod = conf._importconftest(py.path.local("conftest.py"))
120+
mod = conf._importconftest(py.path.local("conftest.py"), importmode="prepend")
117121
assert mod.x == 3
118122
import conftest
119123
assert conftest is mod, (conftest, mod)
120124
subconf = py.path.local().ensure("sub", "conftest.py")
121125
subconf.write("y=4")
122-
mod2 = conf._importconftest(subconf)
126+
mod2 = conf._importconftest(subconf, importmode="prepend")
123127
assert mod != mod2
124128
assert mod2.y == 4
125129
import conftest
@@ -135,17 +139,17 @@ def test_conftestcutdir(testdir):
135139
p = testdir.mkdir("x")
136140
conftest = PytestPluginManager()
137141
conftest_setinitial(conftest, [testdir.tmpdir], confcutdir=p)
138-
values = conftest._getconftestmodules(p)
142+
values = conftest._getconftestmodules(p, importmode="prepend")
139143
assert len(values) == 0
140-
values = conftest._getconftestmodules(conf.dirpath())
144+
values = conftest._getconftestmodules(conf.dirpath(), importmode="prepend")
141145
assert len(values) == 0
142146
assert conf not in conftest._conftestpath2mod
143147
# but we can still import a conftest directly
144-
conftest._importconftest(conf)
145-
values = conftest._getconftestmodules(conf.dirpath())
148+
conftest._importconftest(conf, importmode="prepend")
149+
values = conftest._getconftestmodules(conf.dirpath(), importmode="prepend")
146150
assert values[0].__file__.startswith(str(conf))
147151
# and all sub paths get updated properly
148-
values = conftest._getconftestmodules(p)
152+
values = conftest._getconftestmodules(p, importmode="prepend")
149153
assert len(values) == 1
150154
assert values[0].__file__.startswith(str(conf))
151155

@@ -154,7 +158,7 @@ def test_conftestcutdir_inplace_considered(testdir):
154158
conf = testdir.makeconftest("")
155159
conftest = PytestPluginManager()
156160
conftest_setinitial(conftest, [conf.dirpath()], confcutdir=conf.dirpath())
157-
values = conftest._getconftestmodules(conf.dirpath())
161+
values = conftest._getconftestmodules(conf.dirpath(), importmode="prepend")
158162
assert len(values) == 1
159163
assert values[0].__file__.startswith(str(conf))
160164

@@ -348,13 +352,13 @@ def test_conftest_import_order(testdir, monkeypatch):
348352
ct2 = sub.join("conftest.py")
349353
ct2.write("")
350354

351-
def impct(p):
355+
def impct(p, importmode):
352356
return p
353357

354358
conftest = PytestPluginManager()
355359
conftest._confcutdir = testdir.tmpdir
356360
monkeypatch.setattr(conftest, "_importconftest", impct)
357-
assert conftest._getconftestmodules(sub) == [ct1, ct2]
361+
assert conftest._getconftestmodules(sub, importmode="prepend") == [ct1, ct2]
358362

359363

360364
def test_fixture_dependency(testdir):

testing/test_pluginmanager.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def pytest_myhook(xyz):
3636
pm.hook.pytest_addhooks.call_historic(
3737
kwargs=dict(pluginmanager=config.pluginmanager)
3838
)
39-
config.pluginmanager._importconftest(conf)
39+
config.pluginmanager._importconftest(conf, importmode="prepend")
4040
# print(config.pluginmanager.get_plugins())
4141
res = config.hook.pytest_myhook(xyz=10)
4242
assert res == [11]
@@ -63,7 +63,7 @@ def pytest_addoption(parser):
6363
default=True)
6464
"""
6565
)
66-
config.pluginmanager._importconftest(p)
66+
config.pluginmanager._importconftest(p, importmode="prepend")
6767
assert config.option.test123
6868

6969
def test_configure(self, testdir):
@@ -128,10 +128,10 @@ def test_hook_proxy(self, testdir):
128128
conftest1 = testdir.tmpdir.join("tests/conftest.py")
129129
conftest2 = testdir.tmpdir.join("tests/subdir/conftest.py")
130130

131-
config.pluginmanager._importconftest(conftest1)
131+
config.pluginmanager._importconftest(conftest1, importmode="prepend")
132132
ihook_a = session.gethookproxy(testdir.tmpdir.join("tests"))
133133
assert ihook_a is not None
134-
config.pluginmanager._importconftest(conftest2)
134+
config.pluginmanager._importconftest(conftest2, importmode="prepend")
135135
ihook_b = session.gethookproxy(testdir.tmpdir.join("tests"))
136136
assert ihook_a is not ihook_b
137137

0 commit comments

Comments
 (0)