Merge master into features

This commit is contained in:
Daniel Hahler 2019-02-08 22:02:29 +01:00
commit 9c03196e79
6 changed files with 27 additions and 6 deletions

View File

@ -0,0 +1 @@
Fix handling of ``collect_ignore`` via parent ``conftest.py``.

View File

@ -5,6 +5,7 @@ requires = [
"setuptools-scm",
"wheel",
]
build-backend = "setuptools.build_meta"
[tool.towncrier]
package = "pytest"

View File

@ -607,6 +607,7 @@ class Session(nodes.FSCollector):
yield y
def _collectfile(self, path, handle_dupes=True):
assert path.isfile()
ihook = self.gethookproxy(path)
if not self.isinitpath(path):
if ihook.pytest_ignore_collect(path=path, config=self.config):

View File

@ -599,6 +599,7 @@ class Package(Module):
return proxy
def _collectfile(self, path, handle_dupes=True):
assert path.isfile()
ihook = self.gethookproxy(path)
if not self.isinitpath(path):
if ihook.pytest_ignore_collect(path=path, config=self.config):
@ -642,11 +643,12 @@ class Package(Module):
):
continue
if path.isdir() and path.join("__init__.py").check(file=1):
pkg_prefixes.add(path)
for x in self._collectfile(path):
yield x
if path.isdir():
if path.join("__init__.py").check(file=1):
pkg_prefixes.add(path)
else:
for x in self._collectfile(path):
yield x
def _get_xunit_setup_teardown(holder, attr_name, param_obj=None):

View File

@ -1144,3 +1144,16 @@ def test_collect_symlink_out_of_tree(testdir):
]
)
assert result.ret == 0
def test_collectignore_via_conftest(testdir, monkeypatch):
"""collect_ignore in parent conftest skips importing child (issue #4592)."""
tests = testdir.mkpydir("tests")
tests.ensure("conftest.py").write("collect_ignore = ['ignore_me']")
ignore_me = tests.mkdir("ignore_me")
ignore_me.ensure("__init__.py")
ignore_me.ensure("conftest.py").write("assert 0, 'should_not_be_called'")
result = testdir.runpytest()
assert result.ret == EXIT_NOTESTSCOLLECTED

View File

@ -1,5 +1,6 @@
[tox]
minversion = 2.0
isolated_build = True
minversion = 3.3
distshare = {homedir}/.tox/distshare
# make sure to update environment list in travis.yml and appveyor.yml
envlist =
@ -166,7 +167,9 @@ commands =
[testenv:py37-freeze]
changedir = testing/freeze
# Disable PEP 517 with pip, which does not work with PyInstaller currently.
deps =
--no-use-pep517
pyinstaller
commands =
{envpython} create_executable.py