Add tests for tarfile extractall feature when with symlinks

This commit is contained in:
Senthil Kumaran 2011-04-28 15:38:12 +08:00
parent b185a04aa1
commit 123932f237
1 changed files with 27 additions and 0 deletions

View File

@ -678,6 +678,33 @@ class WriteTest(WriteTestBase):
finally: finally:
shutil.rmtree(tempdir) shutil.rmtree(tempdir)
def test_extractall_symlinks(self):
# Test if extractall works properly when tarfile contains symlinks
tempdir = os.path.join(TEMPDIR, "testsymlinks")
temparchive = os.path.join(TEMPDIR, "testsymlinks.tar")
os.mkdir(tempdir)
try:
source_file = os.path.join(tempdir,'source')
target_file = os.path.join(tempdir,'symlink')
with open(source_file,'w') as f:
f.write('something\n')
os.symlink(source_file, target_file)
tar = tarfile.open(temparchive,'w')
tar.add(source_file)
tar.add(target_file)
tar.close()
# Let's extract it to the location which contains the symlink
tar = tarfile.open(temparchive,'r')
# this should not raise OSError: [Errno 17] File exists
try:
tar.extractall(path=tempdir)
except OSError:
self.fail("extractall failed with symlinked files")
finally:
tar.close()
finally:
os.unlink(temparchive)
shutil.rmtree(tempdir)
class StreamWriteTest(WriteTestBase): class StreamWriteTest(WriteTestBase):