Kaydet (Commit) 083d285b authored tarafından Alexandr Shurigin's avatar Alexandr Shurigin Kaydeden (comit) Tim Graham

Fixed #22681 -- Made TarArchive recognize leading directories properly.

üst 61960dd0
...@@ -144,7 +144,7 @@ class TarArchive(BaseArchive): ...@@ -144,7 +144,7 @@ class TarArchive(BaseArchive):
# note: python<=2.5 doesn't seem to know about pax headers, filter them # note: python<=2.5 doesn't seem to know about pax headers, filter them
members = [member for member in self._archive.getmembers() members = [member for member in self._archive.getmembers()
if member.name != 'pax_global_header'] if member.name != 'pax_global_header']
leading = self.has_leading_dir(members) leading = self.has_leading_dir(x.name for x in members)
for member in members: for member in members:
name = member.name name = member.name
if leading: if leading:
......
...@@ -21,6 +21,7 @@ class ArchiveTester(object): ...@@ -21,6 +21,7 @@ class ArchiveTester(object):
self.tmpdir = tempfile.mkdtemp() self.tmpdir = tempfile.mkdtemp()
self.addCleanup(shutil.rmtree, self.tmpdir) self.addCleanup(shutil.rmtree, self.tmpdir)
self.archive_path = os.path.join(TEST_DIR, self.archive) self.archive_path = os.path.join(TEST_DIR, self.archive)
self.archive_lead_path = os.path.join(TEST_DIR, "leadpath_%s" % self.archive)
# Always start off in TEST_DIR. # Always start off in TEST_DIR.
os.chdir(TEST_DIR) os.chdir(TEST_DIR)
...@@ -42,6 +43,10 @@ class ArchiveTester(object): ...@@ -42,6 +43,10 @@ class ArchiveTester(object):
extract(self.archive_path, self.tmpdir) extract(self.archive_path, self.tmpdir)
self.check_files(self.tmpdir) self.check_files(self.tmpdir)
def test_extract_function_with_leadpath(self):
extract(self.archive_lead_path, self.tmpdir)
self.check_files(self.tmpdir)
def test_extract_function_no_to_path(self): def test_extract_function_no_to_path(self):
os.chdir(self.tmpdir) os.chdir(self.tmpdir)
extract(self.archive_path) extract(self.archive_path)
......
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