34
34
# Prior to 0.1.15 the debian module was called debian_bundle
35
35
from debian_bundle.changelog import Version, Changelog
37
from bzrlib.tests import TestUtil, multiply_tests, TestCaseWithTransport
37
from bzrlib.tests import TestUtil, multiply_tests, ModuleAvailableFeature
40
40
def make_new_upstream_dir(source, dest):
82
82
shutil.rmtree(source)
85
tarball_functions = [('dir', make_new_upstream_dir, '../package-0.2'),
86
('.tar.gz', make_new_upstream_tarball,
87
'../package-0.2.tar.gz'),
88
('.tar.bz2', make_new_upstream_tarball_bz2,
89
'../package-0.2.tar.bz2'),
90
('.zip', make_new_upstream_tarball_zip,
91
'../package-0.2.zip'),
92
('.tar', make_new_upstream_tarball_bare,
93
'../package-0.2.tar'),
97
class RepackTarballAdaptor(object):
99
def adapt(self, test):
101
for (name, function, source) in tarball_functions:
102
new_test = deepcopy(test)
103
source = os.path.basename(source)
104
new_test.build_tarball = function(source)
105
new_test.old_tarball = source
107
new_id = '%s(%s)' % (test.id(), name)
108
return lambda: new_id
109
new_test.id = make_new_id()
110
result.addTest(new_test)
85
def make_new_upstream_tarball_xz(source, dest):
87
f = lzma.LZMAFile(dest, 'w')
89
tar = tarfile.open(None, 'w', f)
98
def make_new_upstream_tarball_lzma(source, dest):
100
f = lzma.LZMAFile(dest, 'w', options={'format': 'alone'})
102
tar = tarfile.open(None, 'w', f)
109
shutil.rmtree(source)
114
112
def load_tests(standard_tests, module, loader):
148
147
old_tarball='../package-0.2.tar.gz')),
149
148
('.tar.bz2', dict(build_tarball=make_new_upstream_tarball_bz2,
150
149
old_tarball='../package-0.2.tar.bz2')),
150
('.tar.xz', dict(build_tarball=make_new_upstream_tarball_xz,
151
old_tarball='../package-0.2.tar.xz',
152
_test_needs_features=[LzmaFeature])),
153
('.tar.lzma', dict(build_tarball=make_new_upstream_tarball_lzma,
154
old_tarball='../package-0.2.tar.lzma',
155
_test_needs_features=[LzmaFeature])),
151
156
('.zip', dict(build_tarball=make_new_upstream_tarball_zip,
152
157
old_tarball='../package-0.2.zip')),
153
158
('.tar', dict(build_tarball=make_new_upstream_tarball_bare,
165
class TestCaseWithTransport(tests.TestCaseWithTransport):
167
if not getattr(tests.TestCaseWithTransport, "assertPathDoesNotExist", None):
168
# Compatibility with bzr < 2.4
169
def assertPathDoesNotExist(self, path):
170
self.failIfExists(path)
172
def assertPathExists(self, path):
173
self.failUnlessExists(path)
176
class TestCaseInTempDir(tests.TestCaseInTempDir):
178
if not getattr(tests.TestCaseInTempDir, "assertPathDoesNotExist", None):
179
# Compatibility with bzr < 2.4
180
def assertPathDoesNotExist(self, path):
181
self.failIfExists(path)
183
def assertPathExists(self, path):
184
self.failUnlessExists(path)
160
187
class BuilddebTestCase(TestCaseWithTransport):
162
189
package_name = 'test'
238
265
>>> builder.dsc_name()
241
def __init__(self, name, version, native=False, version3=False):
268
def __init__(self, name, version, native=False, version3=False,
269
multiple_upstream_tarballs=None):
271
:param name: Package name
272
:param version: Package version
273
:param native: Whether to build a native source package
274
:param version3: Whether to build a version 3.0 source package
275
:param multiple_upstream_tarballs: A list of each top-level directory
276
within the upstream tree which is to be packed as a source format
277
3.0 (quilt) additional upstream tarball
242
279
self.upstream_files = {}
243
280
self.upstream_symlinks = {}
244
281
self.debian_files = {}
246
283
self.native = native
247
284
self.version3 = version3
285
self.multiple_upstream_tarballs = multiple_upstream_tarballs
286
if multiple_upstream_tarballs and not (version3 and not native):
287
raise AssertionError("Multiple upstream tarballs are only "
288
"possible with 3.0 (quilt) format")
248
289
self._cl = Changelog()
249
290
self.new_version(version)
355
396
cmd = ["dpkg-source", "-sn", "-b", basedir]
357
398
if not self.native:
399
if self.multiple_upstream_tarballs:
400
for part in self.multiple_upstream_tarballs:
401
tar_path = "%s_%s.orig-%s.tar.%s" % (self.name,
402
self._cl.version.upstream_version,
404
if os.path.exists(tar_path):
406
tar = tarfile.open(tar_path, 'w:%s' % tar_format)
407
part_basedir = os.path.join(basedir, part)
409
tar.add(part_basedir, arcname=part)
412
shutil.rmtree(part_basedir)
358
413
tar_path = "%s_%s.orig.tar.%s" % (self.name,
359
414
self._cl.version.upstream_version, tar_format)
360
415
if os.path.exists(tar_path):