Commit b2742ba5 authored by Serhiy Storchaka's avatar Serhiy Storchaka Committed by GitHub

[2.7] bpo-34738: Add directory entries in ZIP files created by distutils. (GH-9419). (GH-10950)

(cherry picked from commit 67a93b3a)
parent abe74feb
...@@ -162,7 +162,15 @@ def make_zipfile(base_name, base_dir, verbose=0, dry_run=0): ...@@ -162,7 +162,15 @@ def make_zipfile(base_name, base_dir, verbose=0, dry_run=0):
zip = zipfile.ZipFile(zip_filename, "w", zip = zipfile.ZipFile(zip_filename, "w",
compression=zipfile.ZIP_DEFLATED) compression=zipfile.ZIP_DEFLATED)
if base_dir != os.curdir:
path = os.path.normpath(os.path.join(base_dir, ''))
zip.write(path, path)
log.info("adding '%s'", path)
for dirpath, dirnames, filenames in os.walk(base_dir): for dirpath, dirnames, filenames in os.walk(base_dir):
for name in dirnames:
path = os.path.normpath(os.path.join(dirpath, name, ''))
zip.write(path, path)
log.info("adding '%s'", path)
for name in filenames: for name in filenames:
path = os.path.normpath(os.path.join(dirpath, name)) path = os.path.normpath(os.path.join(dirpath, name))
if os.path.isfile(path): if os.path.isfile(path):
......
...@@ -98,7 +98,7 @@ class ArchiveUtilTestCase(support.TempdirManager, ...@@ -98,7 +98,7 @@ class ArchiveUtilTestCase(support.TempdirManager,
try: try:
names = tar.getnames() names = tar.getnames()
names.sort() names.sort()
return tuple(names) return names
finally: finally:
tar.close() tar.close()
......
...@@ -86,7 +86,7 @@ class BuildDumbTestCase(support.TempdirManager, ...@@ -86,7 +86,7 @@ class BuildDumbTestCase(support.TempdirManager,
finally: finally:
fp.close() fp.close()
contents = sorted(os.path.basename(fn) for fn in contents) contents = sorted(filter(None, map(os.path.basename, contents)))
wanted = ['foo-0.1-py%s.%s.egg-info' % sys.version_info[:2], 'foo.py'] wanted = ['foo-0.1-py%s.%s.egg-info' % sys.version_info[:2], 'foo.py']
if not sys.dont_write_bytecode: if not sys.dont_write_bytecode:
wanted.append('foo.pyc') wanted.append('foo.pyc')
......
...@@ -130,7 +130,9 @@ class SDistTestCase(PyPIRCCommandTestCase): ...@@ -130,7 +130,9 @@ class SDistTestCase(PyPIRCCommandTestCase):
zip_file.close() zip_file.close()
# making sure everything has been pruned correctly # making sure everything has been pruned correctly
self.assertEqual(len(content), 4) expected = ['', 'PKG-INFO', 'README', 'setup.py',
'somecode/', 'somecode/__init__.py']
self.assertEqual(sorted(content), ['fake-1.0/' + x for x in expected])
@unittest.skipUnless(zlib, "requires zlib") @unittest.skipUnless(zlib, "requires zlib")
def test_make_distribution(self): def test_make_distribution(self):
...@@ -246,7 +248,13 @@ class SDistTestCase(PyPIRCCommandTestCase): ...@@ -246,7 +248,13 @@ class SDistTestCase(PyPIRCCommandTestCase):
zip_file.close() zip_file.close()
# making sure everything was added # making sure everything was added
self.assertEqual(len(content), 12) expected = ['', 'PKG-INFO', 'README', 'buildout.cfg',
'data/', 'data/data.dt', 'inroot.txt',
'scripts/', 'scripts/script.py', 'setup.py',
'some/', 'some/file.txt', 'some/other_file.txt',
'somecode/', 'somecode/__init__.py', 'somecode/doc.dat',
'somecode/doc.txt']
self.assertEqual(sorted(content), ['fake-1.0/' + x for x in expected])
# checking the MANIFEST # checking the MANIFEST
f = open(join(self.tmp_dir, 'MANIFEST')) f = open(join(self.tmp_dir, 'MANIFEST'))
......
ZIP files created by :mod:`distutils` will now include entries for
directories.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment