Changeset View
Changeset View
Standalone View
Standalone View
swh/core/tests/test_tarball.py
Show First 20 Lines • Show All 64 Lines • ▼ Show 20 Lines | |||||
def test__unpack_tar_failure(tmp_path, datadir): | def test__unpack_tar_failure(tmp_path, datadir): | ||||
"""Unpack inexistent tarball should fail | """Unpack inexistent tarball should fail | ||||
""" | """ | ||||
tarpath = os.path.join(datadir, 'archives', 'inexistent-archive.tar.Z') | tarpath = os.path.join(datadir, 'archives', 'inexistent-archive.tar.Z') | ||||
assert not os.path.exists(tarpath) | assert not os.path.exists(tarpath) | ||||
with pytest.raises(shutil.ReadError, | with pytest.raises( | ||||
match=f'Unable to uncompress {tarpath} to {tmp_path}'): | shutil.ReadError, match=f'Unable to uncompress {tarpath} to {tmp_path}' | ||||
): | |||||
tarball._unpack_tar(tarpath, tmp_path) | tarball._unpack_tar(tarpath, tmp_path) | ||||
def test__unpack_tar_failure2(tmp_path, datadir): | def test__unpack_tar_failure2(tmp_path, datadir): | ||||
"""Unpack Existent tarball into an inexistent folder should fail | """Unpack Existent tarball into an inexistent folder should fail | ||||
""" | """ | ||||
filename = 'groff-1.02.tar.Z' | filename = 'groff-1.02.tar.Z' | ||||
tarpath = os.path.join(datadir, 'archives', filename) | tarpath = os.path.join(datadir, 'archives', filename) | ||||
assert os.path.exists(tarpath) | assert os.path.exists(tarpath) | ||||
extract_dir = os.path.join(tmp_path, 'dir', 'inexistent') | extract_dir = os.path.join(tmp_path, 'dir', 'inexistent') | ||||
with pytest.raises(shutil.ReadError, | with pytest.raises( | ||||
match=f'Unable to uncompress {tarpath} to {tmp_path}'): | shutil.ReadError, match=f'Unable to uncompress {tarpath} to {tmp_path}' | ||||
): | |||||
tarball._unpack_tar(tarpath, extract_dir) | tarball._unpack_tar(tarpath, extract_dir) | ||||
def test__unpack_tar_failure3(tmp_path, datadir): | def test__unpack_tar_failure3(tmp_path, datadir): | ||||
"""Unpack unsupported tarball should fail | """Unpack unsupported tarball should fail | ||||
""" | """ | ||||
filename = 'hello.zip' | filename = 'hello.zip' | ||||
tarpath = os.path.join(datadir, 'archives', filename) | tarpath = os.path.join(datadir, 'archives', filename) | ||||
assert os.path.exists(tarpath) | assert os.path.exists(tarpath) | ||||
with pytest.raises(shutil.ReadError, | with pytest.raises( | ||||
match=f'Unable to uncompress {tarpath} to {tmp_path}'): | shutil.ReadError, match=f'Unable to uncompress {tarpath} to {tmp_path}' | ||||
): | |||||
tarball._unpack_tar(tarpath, tmp_path) | tarball._unpack_tar(tarpath, tmp_path) | ||||
def test__unpack_tar(tmp_path, datadir): | def test__unpack_tar(tmp_path, datadir): | ||||
"""Unpack supported tarball into an existent folder should be ok | """Unpack supported tarball into an existent folder should be ok | ||||
""" | """ | ||||
filename = 'groff-1.02.tar.Z' | filename = 'groff-1.02.tar.Z' | ||||
Show All 37 Lines | def test_uncompress_tarpaths(tmp_path, datadir, prepare_shutil_state): | ||||
unsupported_tarpaths = [] | unsupported_tarpaths = [] | ||||
for t in tarpaths: | for t in tarpaths: | ||||
if t.endswith('.Z') or t.endswith('.x') or t.endswith('.lz'): | if t.endswith('.Z') or t.endswith('.x') or t.endswith('.lz'): | ||||
unsupported_tarpaths.append(t) | unsupported_tarpaths.append(t) | ||||
# not supported yet | # not supported yet | ||||
for tarpath in unsupported_tarpaths: | for tarpath in unsupported_tarpaths: | ||||
with pytest.raises(ValueError, | with pytest.raises(ValueError, match=f'Problem during unpacking {tarpath}.'): | ||||
match=f'Problem during unpacking {tarpath}.'): | |||||
tarball.uncompress(tarpath, dest=tmp_path) | tarball.uncompress(tarpath, dest=tmp_path) | ||||
# register those unsupported formats | # register those unsupported formats | ||||
tarball.register_new_archive_formats() | tarball.register_new_archive_formats() | ||||
# unsupported formats are now supported | # unsupported formats are now supported | ||||
for n, tarpath in enumerate(tarpaths, start=1): | for n, tarpath in enumerate(tarpaths, start=1): | ||||
tarball.uncompress(tarpath, dest=tmp_path) | tarball.uncompress(tarpath, dest=tmp_path) | ||||
assert n == len(tarpaths) | assert n == len(tarpaths) |