aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_importlib/resources/zip.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_importlib/resources/zip.py')
-rwxr-xr-xLib/test/test_importlib/resources/zip.py26
1 files changed, 10 insertions, 16 deletions
diff --git a/Lib/test/test_importlib/resources/zip.py b/Lib/test/test_importlib/resources/zip.py
index 4dcf6facc77..fc453f02060 100755
--- a/Lib/test/test_importlib/resources/zip.py
+++ b/Lib/test/test_importlib/resources/zip.py
@@ -2,29 +2,23 @@
Generate zip test data files.
"""
-import contextlib
-import os
-import pathlib
import zipfile
-def make_zip_file(src, dst):
+def make_zip_file(tree, dst):
"""
- Zip the files in src into a new zipfile at dst.
+ Zip the files in tree into a new zipfile at dst.
"""
with zipfile.ZipFile(dst, 'w') as zf:
- for src_path, rel in walk(src):
- dst_name = src.name / pathlib.PurePosixPath(rel.as_posix())
- zf.write(src_path, dst_name)
+ for name, contents in walk(tree):
+ zf.writestr(name, contents)
zipfile._path.CompleteDirs.inject(zf)
return dst
-def walk(datapath):
- for dirpath, dirnames, filenames in os.walk(datapath):
- with contextlib.suppress(ValueError):
- dirnames.remove('__pycache__')
- for filename in filenames:
- res = pathlib.Path(dirpath) / filename
- rel = res.relative_to(datapath)
- yield res, rel
+def walk(tree, prefix=''):
+ for name, contents in tree.items():
+ if isinstance(contents, dict):
+ yield from walk(contents, prefix=f'{prefix}{name}/')
+ else:
+ yield f'{prefix}{name}', contents