summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_importlib/_path.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_importlib/_path.py')
-rw-r--r--Lib/test/test_importlib/_path.py33
1 files changed, 22 insertions, 11 deletions
diff --git a/Lib/test/test_importlib/_path.py b/Lib/test/test_importlib/_path.py
index 71a7043..25c799f 100644
--- a/Lib/test/test_importlib/_path.py
+++ b/Lib/test/test_importlib/_path.py
@@ -1,17 +1,18 @@
-# from jaraco.path 3.5
+# from jaraco.path 3.7
import functools
import pathlib
-from typing import Dict, Union
+from typing import Dict, Protocol, Union
+from typing import runtime_checkable
-try:
- from typing import Protocol, runtime_checkable
-except ImportError: # pragma: no cover
- # Python 3.7
- from typing_extensions import Protocol, runtime_checkable # type: ignore
+
+class Symlink(str):
+ """
+ A string indicating the target of a symlink.
+ """
-FilesSpec = Dict[str, Union[str, bytes, 'FilesSpec']] # type: ignore
+FilesSpec = Dict[str, Union[str, bytes, Symlink, 'FilesSpec']] # type: ignore
@runtime_checkable
@@ -28,6 +29,9 @@ class TreeMaker(Protocol):
def write_bytes(self, content):
... # pragma: no cover
+ def symlink_to(self, target):
+ ... # pragma: no cover
+
def _ensure_tree_maker(obj: Union[str, TreeMaker]) -> TreeMaker:
return obj if isinstance(obj, TreeMaker) else pathlib.Path(obj) # type: ignore
@@ -51,12 +55,16 @@ def build(
... "__init__.py": "",
... },
... "baz.py": "# Some code",
- ... }
+ ... "bar.py": Symlink("baz.py"),
+ ... },
+ ... "bing": Symlink("foo"),
... }
>>> target = getfixture('tmp_path')
>>> build(spec, target)
>>> target.joinpath('foo/baz.py').read_text(encoding='utf-8')
'# Some code'
+ >>> target.joinpath('bing/bar.py').read_text(encoding='utf-8')
+ '# Some code'
"""
for name, contents in spec.items():
create(contents, _ensure_tree_maker(prefix) / name)
@@ -79,8 +87,8 @@ def _(content: str, path):
@create.register
-def _(content: str, path):
- path.write_text(content, encoding='utf-8')
+def _(content: Symlink, path):
+ path.symlink_to(content)
class Recording:
@@ -107,3 +115,6 @@ class Recording:
def mkdir(self, **kwargs):
return
+
+ def symlink_to(self, target):
+ pass