Skip to content

Commit

Permalink
Merge pull request #5389 from dirk-thomas/patch-1
Browse files Browse the repository at this point in the history
fix logic if importlib_metadata.PathDistribution.files is None [breaks pytest 4.6.0|1|2]
  • Loading branch information
nicoddemus committed Jun 4, 2019
2 parents 76d5080 + 883db6a commit 79ef048
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 1 deletion.
1 change: 1 addition & 0 deletions changelog/5389.bugfix.rst
@@ -0,0 +1 @@
Fix regressions of `#5063 <https://github.com/pytest-dev/pytest/pull/5063>`__ for ``importlib_metadata.PathDistribution`` which have their ``files`` attribute being ``None``.
2 changes: 1 addition & 1 deletion src/_pytest/config/__init__.py
Expand Up @@ -784,7 +784,7 @@ def _mark_plugins_for_rewrite(self, hook):
str(file)
for dist in importlib_metadata.distributions()
if any(ep.group == "pytest11" for ep in dist.entry_points)
for file in dist.files
for file in dist.files or []
)

for name in _iter_rewritable_modules(package_files):
Expand Down
23 changes: 23 additions & 0 deletions testing/test_config.py
Expand Up @@ -578,6 +578,29 @@ def distributions():
testdir.parseconfig()


def test_importlib_metadata_broken_distribution(testdir, monkeypatch):
"""Integration test for broken distributions with 'files' metadata being None (#5389)"""
monkeypatch.delenv("PYTEST_DISABLE_PLUGIN_AUTOLOAD", raising=False)

class DummyEntryPoint:
name = "mytestplugin"
group = "pytest11"

def load(self):
return object()

class Distribution:
version = "1.0"
files = None
entry_points = (DummyEntryPoint(),)

def distributions():
return (Distribution(),)

monkeypatch.setattr(importlib_metadata, "distributions", distributions)
testdir.parseconfig()


@pytest.mark.parametrize("block_it", [True, False])
def test_plugin_preparse_prevents_setuptools_loading(testdir, monkeypatch, block_it):
monkeypatch.delenv("PYTEST_DISABLE_PLUGIN_AUTOLOAD", raising=False)
Expand Down

0 comments on commit 79ef048

Please sign in to comment.