Merged revisions 72893 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r72893 | martin.v.loewis | 2009-05-24 21:30:52 +0200 (So, 24 Mai 2009) | 3 lines

  Issue #6050: Don't fail extracting a directory from a zipfile if
  the directory already exists.
........
This commit is contained in:
Martin v. Löwis 2009-05-24 19:42:14 +00:00
parent 6c3064beed
commit e7e46f8152
3 changed files with 10 additions and 1 deletions

View File

@ -994,6 +994,11 @@ class TestWithDirectory(unittest.TestCase):
self.assertTrue(os.path.isdir(os.path.join(TESTFN2, "a", "b"))) self.assertTrue(os.path.isdir(os.path.join(TESTFN2, "a", "b")))
self.assertTrue(os.path.exists(os.path.join(TESTFN2, "a", "b", "c"))) self.assertTrue(os.path.exists(os.path.join(TESTFN2, "a", "b", "c")))
def test_bug_6050(self):
# Extraction should succeed if directories already exist
os.mkdir(os.path.join(TESTFN2, "a"))
self.testExtractDir()
def testStoreDir(self): def testStoreDir(self):
os.mkdir(os.path.join(TESTFN2, "x")) os.mkdir(os.path.join(TESTFN2, "x"))
zipf = zipfile.ZipFile(TESTFN, "w") zipf = zipfile.ZipFile(TESTFN, "w")

View File

@ -959,7 +959,8 @@ class ZipFile:
os.makedirs(upperdirs) os.makedirs(upperdirs)
if member.filename[-1] == '/': if member.filename[-1] == '/':
os.mkdir(targetpath) if not os.path.isdir(targetpath):
os.mkdir(targetpath)
return targetpath return targetpath
source = self.open(member, pwd=pwd) source = self.open(member, pwd=pwd)

View File

@ -50,6 +50,9 @@ Core and Builtins
Library Library
------- -------
- Issue #6050: Don't fail extracting a directory from a zipfile if
the directory already exists.
- Issue #1309352: fcntl now converts its third arguments to a C `long` rather - Issue #1309352: fcntl now converts its third arguments to a C `long` rather
than an int, which makes some operations possible under 64-bit Linux (e.g. than an int, which makes some operations possible under 64-bit Linux (e.g.
DN_MULTISHOT with F_NOTIFY). DN_MULTISHOT with F_NOTIFY).