Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_extract_cpio_with_trailing_data(self):
test_file = self.get_test_loc('archive/cpio/cpio_trailing.cpio')
test_dir = self.get_temp_dir()
archive.extract_cpio(test_file, test_dir)
result = os.path.join(test_dir, 'elfinfo-1.0.tar.gz')
assert os.path.exists(result)
def test_extract_cpio_broken2(self):
test_file = self.get_test_loc('archive/cpio/cpio_broken.cpio')
test_dir = self.get_temp_dir()
result = archive.extract_cpio(test_file, test_dir)
expected = sorted(['elfinfo-1.0.tar.gz', 'elfinfo.spec'])
if on_linux:
expected = [bytes(e) for e in expected]
assert expected == sorted(os.listdir(test_dir))
assert ["'elfinfo.spec': \nSkipped 72 bytes before finding valid header"] == result
def test_extract_cpio_with_weird_filename_extension(self):
test_file = self.get_test_loc('archive/cpio/t.cpio.foo')
test_dir = self.get_temp_dir()
result = archive.extract_cpio(test_file, test_dir)
assert [] == result
extracted = self.collect_extracted_path(test_dir)
expected = ['/t/', '/t/t.txt']
assert expected == extracted
def test_extract_cpio_with_invalidpath(self):
test_file = self.get_test_loc('archive/cpio/cpio-invalidpath.cpio')
test_dir = self.get_temp_dir()
archive.extract_cpio(test_file, test_dir)
result = os.path.join(test_dir, 'backup')
assert os.path.exists(result)
result = os.path.join(test_dir, 'this/that')
assert os.path.exists(result)
def test_get_extractors(self):
test_data = [
('archive/zip/basic.zip', [archive.extract_zip]),
('archive/rar/basic.rar', [archive.extract_rar]),
('archive/deb/adduser_3.112ubuntu1_all.deb', [archive.extract_ar]),
('archive/cpio/elfinfo-1.0-1.fc9.src.cpio', [archive.extract_cpio]),
('archive/rpm/elfinfo-1.0-1.fc9.src.rpm', [archive.extract_rpm, archive.extract_cpio]),
('archive/gzip/file_4.26-1.diff.gz', [archive.uncompress_gzip]),
('archive/ar/liby.a', [archive.extract_ar]),
('archive/bz2/single_file_not_tarred.bz2', [archive.uncompress_bzip2]),
('archive/tar/tarred.tar', [archive.extract_tar]),
('archive/tbz/tarred_bzipped.bz', [archive.uncompress_bzip2]),
('archive/tbz/tarred_bzipped.tar.bz2', [archive.extract_tar]),
('archive/tbz/tarred_bzipped.tbz', [archive.extract_tar]),
('archive/tgz/tarred_gzipped.gz', [archive.uncompress_gzip]),
('archive/tgz/tarred_gzipped.tar.gz', [archive.extract_tar]),
('archive/tgz/tarred_gzipped.tgz', [archive.extract_tar]),
('archive/7z/z.7z', [archive.extract_7z]),
('archive/Z/tr2tex.Z', [archive.extract_Z, ]),
('archive/Z/tkWWW-0.11.tar.Z', [archive.extract_Z, archive.extract_tar]),
('archive/xar/xar-1.4.xar', [archive.extract_xarpkg]),
]
def test_extract_cpio_with_relative_path(self):
# test file is created by cmd: find ../.. - |cpio -ov >relative.cpio
# We should somehow add a "parent" folder to extract relative paths
test_file = self.get_test_loc('archive/cpio/cpio_relative.cpio')
test_dir = self.get_temp_dir()
result = archive.extract_cpio(test_file, test_dir)
assert [] == result
extracted = self.collect_extracted_path(test_dir)
expected = [
'/dotdot/',
'/dotdot/dotdot/',
'/dotdot/dotdot/2folder/',
'/dotdot/dotdot/2folder/3folder/',
'/dotdot/dotdot/2folder/3folder/cpio_relative.cpio',
'/dotdot/dotdot/2folder/3folder/relative_file',
'/dotdot/dotdot/2folder/3folder/relative_file~',
'/dotdot/dotdot/2folder/relative_file',
'/dotdot/dotdot/relative_file'
]
assert expected == extracted
def test_extract_cpio_basic(self):
test_file = self.get_test_loc('archive/cpio/elfinfo-1.0-1.fc9.src.cpio')
test_dir = self.get_temp_dir()
archive.extract_cpio(test_file, test_dir)
result = os.path.join(test_dir, 'elfinfo-1.0.tar.gz')
assert os.path.exists(result)
def test_extract_cpio_with_absolute_path(self):
assert not os.path.exists('/tmp/subdir')
test_dir = self.get_temp_dir()
test_file = self.get_test_loc('archive/cpio/cpio_absolute.cpio')
archive.extract_cpio(test_file, test_dir)
assert not os.path.exists('/tmp/subdir')
result = os.path.join(test_dir, 'home/li/Desktop/absolute_folder/absolute_file')
assert os.path.exists(result)