Skip to content

Commit 9c2e16e

Browse files
committed
Capture expectations about _normalized_name compatibility in test
1 parent 051b26a commit 9c2e16e

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

tests/test_integration.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import sys
2+
import pathlib
13
import unittest
24
import packaging.requirements
35
import packaging.version
@@ -6,7 +8,10 @@
68
from importlib_metadata import (
79
MetadataPathFinder,
810
_compat,
11+
distribution,
912
distributions,
13+
entry_points,
14+
metadata,
1015
version,
1116
)
1217

@@ -43,6 +48,48 @@ def __getattribute__(self, name):
4348
_compat.disable_stdlib_finder()
4449

4550

51+
class OldStdlibFinderTests(fixtures.DistInfoPkgOffPath, unittest.TestCase):
52+
def setUp(self):
53+
python_version = sys.version_info[:2]
54+
if python_version < (3, 8) or python_version > (3, 9):
55+
self.skipTest("Tests specific for Python 3.8/3.9")
56+
super().setUp()
57+
58+
def _meta_path_finder(self):
59+
from importlib.metadata import DistributionFinder, PathDistribution
60+
from importlib.util import spec_from_file_location
61+
62+
path = pathlib.Path(self.site_dir)
63+
64+
class CustomFinder:
65+
@classmethod
66+
def find_spec(cls, fullname, _path=None, _target=None):
67+
candidate = pathlib.Path(path, *fullname.split(".")).with_suffix(".py")
68+
if candidate.exists():
69+
return spec_from_file_location(fullname, candidate)
70+
71+
@classmethod
72+
def find_distributions(self, context=DistributionFinder.Context()):
73+
for dist_info in path.glob("*.dist-info"):
74+
yield PathDistribution(dist_info)
75+
76+
return CustomFinder
77+
78+
def test_compatibility_with_old_stdlib_path_distribution(self):
79+
"""
80+
Given a custom finder that uses Python 3.8/3.9 importlib.metadata is installed,
81+
when importlib_metadata functions are called, there should be no exceptions.
82+
Ref python/importlib_metadata#396.
83+
"""
84+
self.fixtures.enter_context(fixtures.install_finder(self._meta_path_finder()))
85+
86+
assert list(distributions())
87+
assert distribution("distinfo_pkg")
88+
assert version("distinfo_pkg") > "0"
89+
assert list(metadata("distinfo_pkg"))
90+
assert list(entry_points(group="entries"))
91+
92+
4693
class DistSearch(unittest.TestCase):
4794
def test_search_dist_dirs(self):
4895
"""

0 commit comments

Comments
 (0)