patool/tests/test_archives.py

252 lines
7.5 KiB
Python

# -*- coding: utf-8 -*-
# Copyright (C) 2010 Bastian Kleineidam
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import ArchiveTest, needs_program, needs_codec
class TestArchives (ArchiveTest):
@needs_program('tar')
def test_tar (self):
self.program = 'tar'
self.archive_commands('t.tar')
@needs_codec('tar', 'gzip')
def test_tar_gz (self):
self.program = 'tar'
self.archive_commands('t.tar.gz')
self.archive_commands('t.tgz')
@needs_codec('tar', 'compress')
def test_tar_z (self):
self.program = 'tar'
self.archive_commands('t.tar.Z')
self.archive_commands('t.taz')
@needs_codec('tar', 'bzip2')
def test_tar_bz2 (self):
self.program = 'tar'
self.archive_commands('t.tar.bz2')
self.archive_commands('t.tbz2')
@needs_codec('tar', 'lzma')
def test_tar_lzma (self):
self.program = 'tar'
self.archive_commands('t.tar.lzma')
@needs_codec('tar', 'xz')
def test_tar_xz (self):
self.program = 'tar'
self.archive_commands('t.tar.xz')
@needs_program('star')
def test_star (self):
self.program = 'star'
self.archive_commands('t.tar')
@needs_codec('tar', 'gzip')
def test_star_gz (self):
self.program = 'star'
self.archive_commands('t.tar.gz')
self.archive_commands('t.tgz')
@needs_codec('tar', 'compress')
def test_star_z (self):
self.program = 'star'
self.archive_commands('t.tar.Z')
self.archive_commands('t.taz')
@needs_codec('tar', 'bzip2')
def test_star_bz2 (self):
self.program = 'star'
self.archive_commands('t.tar.bz2')
self.archive_commands('t.tbz2')
@needs_codec('tar', 'lzma')
def test_star_lzma (self):
self.program = 'star'
self.archive_commands('t.tar.lzma')
@needs_codec('tar', 'xz')
def test_star_xz (self):
self.program = 'star'
self.archive_commands('t.tar.xz')
@needs_program('bzip2')
def test_bzip2 (self):
self.program = 'bzip2'
self.archive_extract('t.bz2')
self.archive_test('t.bz2')
self.archive_create('t.bz2', singlefile=True)
@needs_program('pbzip2')
def test_pbzip2 (self):
self.program = 'pbzip2'
self.archive_extract('t.bz2')
self.archive_test('t.bz2')
self.archive_create('t.bz2', singlefile=True)
@needs_program('echo')
def test_echo (self):
self.program = 'echo'
self.archive_list('t.bz2')
self.archive_list('t.Z')
self.archive_list('t.lzma')
@needs_program('unzip')
def test_unzip (self):
self.program = 'unzip'
self.archive_extract('t.zip')
self.archive_list('t.zip')
self.archive_test('t.zip')
self.archive_extract('t.jar')
self.archive_list('t.jar')
self.archive_test('t.jar')
@needs_program('zip')
def test_zip (self):
self.program = 'zip'
self.archive_create('t.zip')
@needs_program('gzip')
def test_gzip (self):
self.program = 'gzip'
self.archive_commands('t.gz', singlefile=True)
self.archive_commands('t.txt.gz', singlefile=True)
self.archive_extract('t.Z')
@needs_program('uncompress.real')
def test_uncompress (self):
self.program = 'uncompress.real'
self.archive_extract('t.Z')
@needs_program('compress')
def test_compress (self):
self.program = 'compress'
self.archive_create('t.Z', singlefile=True)
@needs_program('7z')
def test_p7zip (self):
self.program = '7z'
self.archive_commands('t.7z')
self.archive_list('t.gz')
self.archive_list('t.bz2')
self.archive_list('t.zip')
self.archive_list('t.jar')
self.archive_list('t.Z')
self.archive_list('t.cab')
self.archive_list('t.arj')
self.archive_list('t.cpio')
self.archive_list('t.rpm')
self.archive_list('t.deb')
self.archive_extract('t.gz')
self.archive_extract('t.bz2')
self.archive_extract('t.zip')
self.archive_extract('t.jar')
self.archive_extract('t.Z')
self.archive_extract('t.cab')
self.archive_extract('t.arj')
self.archive_extract('t.cpio')
self.archive_extract('t.rpm')
self.archive_extract('t.deb')
self.archive_test('t.gz')
self.archive_test('t.bz2')
self.archive_test('t.zip')
self.archive_test('t.jar')
self.archive_test('t.Z')
self.archive_test('t.cab')
self.archive_test('t.arj')
self.archive_test('t.cpio')
self.archive_test('t.rpm')
self.archive_test('t.deb')
@needs_codec('7z', 'rar')
def test_p7zip_rar (self):
# only succeeds with the rar module for 7z installed
self.program = '7z'
self.archive_list('t.rar')
self.archive_extract('t.rar')
self.archive_test('t.rar')
@needs_program('unrar')
def test_unrar (self):
self.program = 'unrar'
self.archive_list('t.rar')
self.archive_extract('t.rar')
@needs_program('rar')
def test_rar (self):
self.program = 'rar'
self.archive_commands('t.rar')
@needs_program('cabextract')
def test_cabextract (self):
self.program = 'cabextract'
self.archive_list('t.cab')
self.archive_extract('t.cab')
@needs_program('arj')
def test_arj (self):
self.program = 'arj'
self.archive_commands('t.arj')
@needs_program('cpio')
def test_cpio (self):
self.program = 'cpio'
self.archive_list('t.cpio')
self.archive_extract('t.cpio')
self.archive_create('t.cpio')
@needs_program('rpm')
def test_rpm (self):
self.program = 'rpm'
self.archive_list('t.rpm')
# The rpm test fails on non-rpm system with missing dependencies.
# I am too lazy to build a tiny rpm with one file
# and no dependency.
#self.archive_test('t.rpm')
@needs_program('rpm2cpio')
@needs_program('cpio')
def test_rpm_extract (self):
self.program = 'rpm2cpio'
self.archive_extract('t.rpm')
@needs_program('dpkg-deb')
def test_dpkg (self):
self.program = 'dpkg'
self.archive_list('t.deb')
self.archive_extract('t.deb')
self.archive_test('t.deb')
@needs_program('lzop')
def test_lzop (self):
self.program = 'lzop'
self.archive_commands('t.lzo', singlefile=True)
@needs_program('lzma')
def test_lzma (self):
self.program = 'lzma'
self.archive_test('t.lzma')
self.archive_extract('t.lzma')
self.archive_create('t.lzma', singlefile=True)
@needs_program('xz')
def test_xz (self):
self.program = 'xz'
self.archive_test('t.xz')
self.archive_extract('t.xz')
self.archive_create('t.xz', singlefile=True)