Skip to content

Commit 0ae2771

Browse files
dirk-thomasnicoddemus
authored andcommitted
Backport of #5389: fix for 'files' = None in broken metadata
1 parent 937f945 commit 0ae2771

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

changelog/5389.bugfix.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix regressions of `#5063 <https://github.com/pytest-dev/pytest/pull/5063>`__ for ``importlib_metadata.PathDistribution`` which have their ``files`` attribute being ``None``.

src/_pytest/config/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -800,7 +800,7 @@ def _mark_plugins_for_rewrite(self, hook):
800800
str(file)
801801
for dist in importlib_metadata.distributions()
802802
if any(ep.group == "pytest11" for ep in dist.entry_points)
803-
for file in dist.files
803+
for file in dist.files or []
804804
)
805805

806806
for name in _iter_rewritable_modules(package_files):

testing/test_config.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -586,6 +586,29 @@ def distributions():
586586
testdir.parseconfig()
587587

588588

589+
def test_importlib_metadata_broken_distribution(testdir, monkeypatch):
590+
"""Integration test for broken distributions with 'files' metadata being None (#5389)"""
591+
monkeypatch.delenv("PYTEST_DISABLE_PLUGIN_AUTOLOAD", raising=False)
592+
593+
class DummyEntryPoint:
594+
name = "mytestplugin"
595+
group = "pytest11"
596+
597+
def load(self):
598+
return object()
599+
600+
class Distribution:
601+
version = "1.0"
602+
files = None
603+
entry_points = (DummyEntryPoint(),)
604+
605+
def distributions():
606+
return (Distribution(),)
607+
608+
monkeypatch.setattr(importlib_metadata, "distributions", distributions)
609+
testdir.parseconfig()
610+
611+
589612
@pytest.mark.parametrize("block_it", [True, False])
590613
def test_plugin_preparse_prevents_setuptools_loading(testdir, monkeypatch, block_it):
591614
monkeypatch.delenv("PYTEST_DISABLE_PLUGIN_AUTOLOAD", raising=False)

0 commit comments

Comments
 (0)