1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
# vim: set fileencoding=utf-8 :
"""Test tarball compression type detection"""
from . import context
import unittest
from gbp.deb.source import DebianSource
from gbp.scripts import export_orig
from gbp.deb import DebianPkgPolicy
from gbp.errors import GbpError
class MockGitRepository:
def __init__(self, with_branch=False, subject=None):
self.with_branch = with_branch
self.subject = subject
def has_pristine_tar_branch(self):
return self.with_branch
def has_branch(self, branch, remote=False):
return branch == 'pristine-tar' and self.with_branch
def pristine_tar_branch(self):
'pristine-tar'
def grep_log(self, regex, branch, merges=True):
return None
def get_commit_info(self, commit):
return {'subject': self.subject}
class MockedSource(DebianSource):
def __init__(self):
pass
def is_native(self):
return False
@property
def name(self):
return 'source'
@property
def upstream_version(self):
return '1.2'
class TestDetection(unittest.TestCase):
def setUp(self):
self.source = MockedSource()
self.tmpdir = context.new_tmpdir(__name__)
def tearDown(self):
context.teardown()
def test_guess_comp_type_no_pristine_tar_no_orig(self):
repo = MockGitRepository(with_branch=False)
guessed = export_orig.guess_comp_type(
'auto', self.source, repo, str(self.tmpdir))
self.assertEqual('gzip', guessed)
def test_guess_comp_type_no_pristine_tar_with_orig(self):
open(self.tmpdir.join('source_1.2.orig.tar.bz2'), "w").close()
repo = MockGitRepository(with_branch=False)
guessed = export_orig.guess_comp_type(
'auto', self.source, repo, str(self.tmpdir))
self.assertEqual('bzip2', guessed)
def test_guess_comp_type_no_pristine_tar_with_multiple_origs(self):
open(self.tmpdir.join('source_1.2.orig.tar.gz'), "w").close()
open(self.tmpdir.join('source_1.2.orig.tar.xz'), "w").close()
repo = MockGitRepository(with_branch=False)
with self.assertRaises(GbpError):
export_orig.guess_comp_type('auto', self.source, repo, str(self.tmpdir))
def test_guess_comp_type_auto_bzip2(self):
subject = 'pristine-tar data for source_1.2-3.orig.tar.bz2'
repo = MockGitRepository(with_branch=True, subject=subject)
guessed = export_orig.guess_comp_type(
'auto', self.source, repo, str(self.tmpdir))
self.assertEqual("bzip2", guessed)
def test_has_orig_single_false(self):
self.assertFalse(DebianPkgPolicy.has_origs([self.source.upstream_tarball_name('gzip')], str(self.tmpdir)))
def test_has_orig_single_true(self):
open(self.tmpdir.join('source_1.2.orig.tar.gz'), "w").close()
self.assertTrue(DebianPkgPolicy.has_origs([self.source.upstream_tarball_name('gzip')], str(self.tmpdir)))
def test_has_orig_multiple_false(self):
orig_files = [self.source.upstream_tarball_name('gzip')] + \
[self.source.upstream_tarball_name('gzip', sub) for sub in ['foo', 'bar']]
self.assertFalse(DebianPkgPolicy.has_origs(orig_files, str(self.tmpdir)))
def test_has_orig_multiple_true(self):
for ext in ['', '-foo', '-bar']:
open(self.tmpdir.join('source_1.2.orig%s.tar.gz' % ext), "w").close()
orig_files = [self.source.upstream_tarball_name('gzip')] + \
[self.source.upstream_tarball_name('gzip', sub) for sub in ['foo', 'bar']]
self.assertTrue(DebianPkgPolicy.has_origs(orig_files, str(self.tmpdir)))
def test_guess_comp_type_bzip2(self):
repo = MockGitRepository(with_branch=False)
guessed = export_orig.guess_comp_type(
'bzip2', self.source, repo, None)
self.assertEqual("bzip2", guessed)
def test_guess_comp_type_gzip(self):
repo = MockGitRepository(with_branch=False)
guessed = export_orig.guess_comp_type(
'gzip', self.source, repo, None)
self.assertEqual("gzip", guessed)
def test_guess_comp_type_bz(self):
repo = MockGitRepository(with_branch=False)
guessed = export_orig.guess_comp_type(
'xz', self.source, repo, None)
self.assertEqual("xz", guessed)
def test_guess_comp_type_lzma(self):
repo = MockGitRepository(with_branch=False)
guessed = export_orig.guess_comp_type(
'lzma', self.source, repo, None)
self.assertEqual("lzma", guessed)
def test_guess_comp_type_bz2(self):
repo = MockGitRepository(with_branch=False)
guessed = export_orig.guess_comp_type(
'bz2', self.source, repo, None)
self.assertEqual("bzip2", guessed)
def test_guess_comp_type_gz(self):
repo = MockGitRepository(with_branch=False)
guessed = export_orig.guess_comp_type(
'gz', self.source, repo, None)
self.assertEqual("gzip", guessed)
def test_guess_comp_type_no_repo(self):
guessed = export_orig.guess_comp_type(
'auto', self.source, None, str(self.tmpdir))
self.assertEqual('gzip', guessed)
|