summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_importlib/test_main.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_importlib/test_main.py')
-rw-r--r--Lib/test/test_importlib/test_main.py45
1 files changed, 44 insertions, 1 deletions
diff --git a/Lib/test/test_importlib/test_main.py b/Lib/test/test_importlib/test_main.py
index 3b49227..1d38171 100644
--- a/Lib/test/test_importlib/test_main.py
+++ b/Lib/test/test_importlib/test_main.py
@@ -12,6 +12,7 @@ except ImportError:
from . import fixtures
from ._context import suppress
+from ._path import Symlink
from importlib.metadata import (
Distribution,
EntryPoint,
@@ -68,7 +69,7 @@ class BasicTests(fixtures.DistInfoPkg, unittest.TestCase):
dict(name=''),
)
def test_invalid_inputs_to_from_name(self, name):
- with self.assertRaises(ValueError):
+ with self.assertRaises(Exception):
Distribution.from_name(name)
@@ -207,6 +208,20 @@ class DiscoveryTests(
with self.assertRaises(ValueError):
list(distributions(context='something', name='else'))
+ def test_interleaved_discovery(self):
+ """
+ Ensure interleaved searches are safe.
+
+ When the search is cached, it is possible for searches to be
+ interleaved, so make sure those use-cases are safe.
+
+ Ref #293
+ """
+ dists = distributions()
+ next(dists)
+ version('egginfo-pkg')
+ next(dists)
+
class DirectoryTest(fixtures.OnSysPath, fixtures.SiteDir, unittest.TestCase):
def test_egg_info(self):
@@ -388,6 +403,27 @@ class PackagesDistributionsTest(
assert not any(name.endswith('.dist-info') for name in distributions)
+ def test_packages_distributions_symlinked_top_level(self) -> None:
+ """
+ Distribution is resolvable from a simple top-level symlink in RECORD.
+ See #452.
+ """
+
+ files: fixtures.FilesSpec = {
+ "symlinked_pkg-1.0.0.dist-info": {
+ "METADATA": """
+ Name: symlinked-pkg
+ Version: 1.0.0
+ """,
+ "RECORD": "symlinked,,\n",
+ },
+ ".symlink.target": {},
+ "symlinked": Symlink(".symlink.target"),
+ }
+
+ fixtures.build_files(files, self.site_dir)
+ assert packages_distributions()['symlinked'] == ['symlinked-pkg']
+
class PackagesDistributionsEggTest(
fixtures.EggInfoPkg,
@@ -424,3 +460,10 @@ class PackagesDistributionsEggTest(
# sources_fallback-pkg has one import ('sources_fallback') inferred from
# SOURCES.txt (top_level.txt and installed-files.txt is missing)
assert import_names_from_package('sources_fallback-pkg') == {'sources_fallback'}
+
+
+class EditableDistributionTest(fixtures.DistInfoPkgEditable, unittest.TestCase):
+ def test_origin(self):
+ dist = Distribution.from_name('distinfo-pkg')
+ assert dist.origin.url.endswith('.whl')
+ assert dist.origin.archive_info.hashes.sha256