Merge pull request #11043 from bluetech/confcutdir-rootpath
config: fallback confcutdir to rootpath if inipath is not set
This commit is contained in:
commit
24534cdd29
|
@ -0,0 +1,3 @@
|
||||||
|
When `--confcutdir` is not specified, and there is no config file present, the conftest cutoff directory (`--confcutdir`) is now set to the :ref:`rootdir`.
|
||||||
|
Previously in such cases, `conftest.py` files would be probed all the way to the root directory of the filesystem.
|
||||||
|
If you are badly affected by this change, consider adding an empty config file to your desired cutoff directory, or explicitly set `--confcutdir`.
|
|
@ -1261,8 +1261,11 @@ class Config:
|
||||||
_pytest.deprecated.STRICT_OPTION, stacklevel=2
|
_pytest.deprecated.STRICT_OPTION, stacklevel=2
|
||||||
)
|
)
|
||||||
|
|
||||||
if self.known_args_namespace.confcutdir is None and self.inipath is not None:
|
if self.known_args_namespace.confcutdir is None:
|
||||||
confcutdir = str(self.inipath.parent)
|
if self.inipath is not None:
|
||||||
|
confcutdir = str(self.inipath.parent)
|
||||||
|
else:
|
||||||
|
confcutdir = str(self.rootpath)
|
||||||
self.known_args_namespace.confcutdir = confcutdir
|
self.known_args_namespace.confcutdir = confcutdir
|
||||||
try:
|
try:
|
||||||
self.hook.pytest_load_initial_conftests(
|
self.hook.pytest_load_initial_conftests(
|
||||||
|
|
|
@ -179,6 +179,23 @@ class TestParseIni:
|
||||||
assert result.ret != 0
|
assert result.ret != 0
|
||||||
result.stderr.fnmatch_lines("ERROR: *pyproject.toml: Invalid statement*")
|
result.stderr.fnmatch_lines("ERROR: *pyproject.toml: Invalid statement*")
|
||||||
|
|
||||||
|
def test_confcutdir_default_without_configfile(self, pytester: Pytester) -> None:
|
||||||
|
# If --confcutdir is not specified, and there is no configfile, default
|
||||||
|
# to the roothpath.
|
||||||
|
sub = pytester.mkdir("sub")
|
||||||
|
os.chdir(sub)
|
||||||
|
config = pytester.parseconfigure()
|
||||||
|
assert config.pluginmanager._confcutdir == sub
|
||||||
|
|
||||||
|
def test_confcutdir_default_with_configfile(self, pytester: Pytester) -> None:
|
||||||
|
# If --confcutdir is not specified, and there is a configfile, default
|
||||||
|
# to the configfile's directory.
|
||||||
|
pytester.makeini("[pytest]")
|
||||||
|
sub = pytester.mkdir("sub")
|
||||||
|
os.chdir(sub)
|
||||||
|
config = pytester.parseconfigure()
|
||||||
|
assert config.pluginmanager._confcutdir == pytester.path
|
||||||
|
|
||||||
@pytest.mark.xfail(reason="probably not needed")
|
@pytest.mark.xfail(reason="probably not needed")
|
||||||
def test_confcutdir(self, pytester: Pytester) -> None:
|
def test_confcutdir(self, pytester: Pytester) -> None:
|
||||||
sub = pytester.mkdir("sub")
|
sub = pytester.mkdir("sub")
|
||||||
|
|
|
@ -594,7 +594,13 @@ class TestConftestVisibility:
|
||||||
print("pytestarg : %s" % testarg)
|
print("pytestarg : %s" % testarg)
|
||||||
print("expected pass : %s" % expect_ntests_passed)
|
print("expected pass : %s" % expect_ntests_passed)
|
||||||
os.chdir(dirs[chdir])
|
os.chdir(dirs[chdir])
|
||||||
reprec = pytester.inline_run(testarg, "-q", "--traceconfig")
|
reprec = pytester.inline_run(
|
||||||
|
testarg,
|
||||||
|
"-q",
|
||||||
|
"--traceconfig",
|
||||||
|
"--confcutdir",
|
||||||
|
pytester.path,
|
||||||
|
)
|
||||||
reprec.assertoutcome(passed=expect_ntests_passed)
|
reprec.assertoutcome(passed=expect_ntests_passed)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue