summaryrefslogtreecommitdiff
path: root/Lib/test/test_importlib/fixtures.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_importlib/fixtures.py')
-rw-r--r--Lib/test/test_importlib/fixtures.py69
1 files changed, 55 insertions, 14 deletions
diff --git a/Lib/test/test_importlib/fixtures.py b/Lib/test/test_importlib/fixtures.py
index 8fa92909d5..429313e9ef 100644
--- a/Lib/test/test_importlib/fixtures.py
+++ b/Lib/test/test_importlib/fixtures.py
@@ -7,6 +7,7 @@ import textwrap
import contextlib
from test.support.os_helper import FS_NONASCII
+from typing import Dict, Union
@contextlib.contextmanager
@@ -71,8 +72,13 @@ class OnSysPath(Fixtures):
self.fixtures.enter_context(self.add_sys_path(self.site_dir))
+# Except for python/mypy#731, prefer to define
+# FilesDef = Dict[str, Union['FilesDef', str]]
+FilesDef = Dict[str, Union[Dict[str, Union[Dict[str, str], str]], str]]
+
+
class DistInfoPkg(OnSysPath, SiteDir):
- files = {
+ files: FilesDef = {
"distinfo_pkg-1.0.0.dist-info": {
"METADATA": """
Name: distinfo-pkg
@@ -86,19 +92,55 @@ class DistInfoPkg(OnSysPath, SiteDir):
[entries]
main = mod:main
ns:sub = mod:main
- """
- },
+ """,
+ },
"mod.py": """
def main():
print("hello world")
""",
- }
+ }
def setUp(self):
super(DistInfoPkg, self).setUp()
build_files(DistInfoPkg.files, self.site_dir)
+class DistInfoPkgWithDot(OnSysPath, SiteDir):
+ files: FilesDef = {
+ "pkg_dot-1.0.0.dist-info": {
+ "METADATA": """
+ Name: pkg.dot
+ Version: 1.0.0
+ """,
+ },
+ }
+
+ def setUp(self):
+ super(DistInfoPkgWithDot, self).setUp()
+ build_files(DistInfoPkgWithDot.files, self.site_dir)
+
+
+class DistInfoPkgWithDotLegacy(OnSysPath, SiteDir):
+ files: FilesDef = {
+ "pkg.dot-1.0.0.dist-info": {
+ "METADATA": """
+ Name: pkg.dot
+ Version: 1.0.0
+ """,
+ },
+ "pkg.lot.egg-info": {
+ "METADATA": """
+ Name: pkg.lot
+ Version: 1.0.0
+ """,
+ },
+ }
+
+ def setUp(self):
+ super(DistInfoPkgWithDotLegacy, self).setUp()
+ build_files(DistInfoPkgWithDotLegacy.files, self.site_dir)
+
+
class DistInfoPkgOffPath(SiteDir):
def setUp(self):
super(DistInfoPkgOffPath, self).setUp()
@@ -106,7 +148,7 @@ class DistInfoPkgOffPath(SiteDir):
class EggInfoPkg(OnSysPath, SiteDir):
- files = {
+ files: FilesDef = {
"egginfo_pkg.egg-info": {
"PKG-INFO": """
Name: egginfo-pkg
@@ -129,13 +171,13 @@ class EggInfoPkg(OnSysPath, SiteDir):
[test]
pytest
""",
- "top_level.txt": "mod\n"
- },
+ "top_level.txt": "mod\n",
+ },
"mod.py": """
def main():
print("hello world")
""",
- }
+ }
def setUp(self):
super(EggInfoPkg, self).setUp()
@@ -143,7 +185,7 @@ class EggInfoPkg(OnSysPath, SiteDir):
class EggInfoFile(OnSysPath, SiteDir):
- files = {
+ files: FilesDef = {
"egginfo_file.egg-info": """
Metadata-Version: 1.0
Name: egginfo_file
@@ -156,7 +198,7 @@ class EggInfoFile(OnSysPath, SiteDir):
Description: UNKNOWN
Platform: UNKNOWN
""",
- }
+ }
def setUp(self):
super(EggInfoFile, self).setUp()
@@ -164,12 +206,12 @@ class EggInfoFile(OnSysPath, SiteDir):
class LocalPackage:
- files = {
+ files: FilesDef = {
"setup.py": """
import setuptools
setuptools.setup(name="local-pkg", version="2.0.1")
""",
- }
+ }
def setUp(self):
self.fixtures = contextlib.ExitStack()
@@ -214,8 +256,7 @@ def build_files(file_defs, prefix=pathlib.Path()):
class FileBuilder:
def unicode_filename(self):
- return FS_NONASCII or \
- self.skip("File system does not support non-ascii.")
+ return FS_NONASCII or self.skip("File system does not support non-ascii.")
def DALS(str):