Merge lp:~jelmer/bzr-builddeb/import-dsc-incremental into lp:bzr-builddeb

Proposed by Jelmer Vernooij
Status: Merged
Approved by: James Westby
Approved revision: 591
Merged at revision: 589
Proposed branch: lp:~jelmer/bzr-builddeb/import-dsc-incremental
Merge into: lp:bzr-builddeb
Diff against target: 257 lines (+115/-89)
4 files modified
cmds.py (+3/-3)
debian/changelog (+8/-0)
debian/control (+1/-1)
tests/blackbox/test_import_dsc.py (+103/-85)
To merge this branch: bzr merge lp:~jelmer/bzr-builddeb/import-dsc-incremental
Reviewer Review Type Date Requested Status
James Westby Approve
Review via email: mp+68401@code.launchpad.net

Description of the change

Fix incremental use of "bzr import-dsc", with tests.

To post a comment you must log in.
Revision history for this message
James Westby (james-w) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'cmds.py'
2--- cmds.py 2011-07-18 20:51:30 +0000
3+++ cmds.py 2011-07-19 15:14:11 +0000
4@@ -872,15 +872,15 @@
5 '..'))
6 try:
7 if last_version is not None:
8- if not db.pristine_tar_source.has_version(
9+ if not db.pristine_upstream_source.has_version(
10 changelog.package, last_version.upstream_version):
11 raise BzrCommandError("Unable to find the tag for the "
12 "previous upstream version, %s, in the branch: %s."
13 " Consider importing it via import-dsc or "
14 "import-upstream." % (last_version,
15- db.pristine_tar_source.tag_name(
16+ db.pristine_upstream_source.tag_name(
17 last_version.upstream_version)))
18- upstream_tip = db.pristine_tar_source.version_as_revision(
19+ upstream_tip = db.pristine_upstream_source.version_as_revision(
20 changelog.package, last_version.upstream_version)
21 db.extract_upstream_tree(upstream_tip, tempdir)
22 else:
23
24=== modified file 'debian/changelog'
25--- debian/changelog 2011-07-19 12:19:45 +0000
26+++ debian/changelog 2011-07-19 15:14:11 +0000
27@@ -1,3 +1,11 @@
28+bzr-builddeb (2.7.6) UNRELEASED; urgency=low
29+
30+ * Bump standards version to 3.9.2 (no changes).
31+ * Fix AttributeError in incremental imports using 'bzr import-dsc'.
32+ LP: #812950
33+
34+ -- Jelmer Vernooij <jelmer@debian.org> Tue, 19 Jul 2011 17:05:38 +0200
35+
36 bzr-builddeb (2.7.5) unstable; urgency=low
37
38 [ Jelmer Vernooij ]
39
40=== modified file 'debian/control'
41--- debian/control 2011-06-13 18:27:03 +0000
42+++ debian/control 2011-07-19 15:14:11 +0000
43@@ -8,7 +8,7 @@
44 Vcs-Bzr: http://bzr.debian.org/pkg-bazaar/bzr-builddeb/unstable
45 Vcs-Browser: http://bzr.debian.org/loggerhead/pkg-bazaar/bzr-builddeb/unstable
46 X-Python-Version: >= 2.4
47-Standards-Version: 3.9.1
48+Standards-Version: 3.9.2
49
50 Package: bzr-builddeb
51 Architecture: all
52
53=== modified file 'tests/blackbox/test_import_dsc.py'
54--- tests/blackbox/test_import_dsc.py 2011-06-04 08:52:53 +0000
55+++ tests/blackbox/test_import_dsc.py 2011-07-19 15:14:11 +0000
56@@ -25,98 +25,116 @@
57
58 from bzrlib.transport import get_transport
59
60-from bzrlib.plugins.builddeb.tests import BuilddebTestCase
61+from bzrlib.plugins.builddeb.tests import BuilddebTestCase, Version
62 from bzrlib.plugins.builddeb.tests.test_import_dsc import PristineTarFeature
63
64
65 class TestBaseImportDsc(BuilddebTestCase):
66
67- def _upstream_dir(self, package_name, upstream_version):
68- return package_name + '-' + upstream_version
69- upstream_dir = property(lambda self:self._upstream_dir(self.package_name,
70- self.upstream_version))
71- def _upstream_tarball_name(self, package_name, upstream_version):
72- return package_name + '_' + upstream_version + '.orig.tar.gz'
73- upstream_tarball_name = property(lambda self:
74- self._upstream_tarball_name(self.package_name, self.upstream_version))
75- dsc_name = property(lambda self:
76- self.package_name + '_' + str(self.package_version) + '.dsc')
77-
78- def make_unpacked_upstream_source(self, transport=None):
79- if transport is None:
80- transport = get_transport(self.upstream_dir)
81- transport.ensure_base()
82- self.build_tree(['README'], transport=transport)
83-
84- def get_test_upstream_version(self, upstream_version):
85- """Return the upstream_version to be used in a test helper method."""
86- if upstream_version is None:
87- return self.upstream_version
88- else:
89- return upstream_version
90-
91- def make_upstream_tarball(self, upstream_version=None):
92- upstream_version = self.get_test_upstream_version(upstream_version)
93- upstream_dir = self._upstream_dir(self.package_name, upstream_version)
94- self.make_unpacked_upstream_source(get_transport(upstream_dir))
95- tar = tarfile.open(
96- self._upstream_tarball_name(self.package_name, upstream_version),
97- 'w:gz')
98- try:
99- tar.add(self.upstream_dir)
100- finally:
101- tar.close()
102-
103- def make_debian_dir(self, debian_dir):
104- os.mkdir(debian_dir)
105- cl = self.make_changelog()
106- self.write_changelog(cl, os.path.join(debian_dir, 'changelog'))
107- f = open(os.path.join(debian_dir, 'control'), 'wb')
108- try:
109- f.write('Source: %s\n' % self.package_name)
110- f.write('Maintainer: none\n')
111- f.write('Standards-Version: 3.7.2\n')
112- f.write('\n')
113- f.write('Package: %s\n' % self.package_name)
114- f.write('Architecture: all\n')
115- finally:
116- f.close()
117-
118- def make_real_source_package(self):
119- self.make_upstream_tarball()
120- debian_dir = os.path.join(self.upstream_dir, 'debian')
121- self.make_debian_dir(debian_dir)
122- proc = subprocess.Popen('dpkg-source -b %s' % self.upstream_dir,
123+ def _upstream_dir(self, package_name, upstream_version):
124+ return package_name + '-' + upstream_version
125+
126+ upstream_dir = property(lambda self:self._upstream_dir(self.package_name,
127+ self.upstream_version))
128+
129+ def _upstream_tarball_name(self, package_name, upstream_version):
130+ return package_name + '_' + upstream_version + '.orig.tar.gz'
131+ upstream_tarball_name = property(lambda self:
132+ self._upstream_tarball_name(self.package_name, self.upstream_version))
133+
134+ def make_unpacked_upstream_source(self, transport=None):
135+ if transport is None:
136+ transport = get_transport(self.upstream_dir)
137+ transport.ensure_base()
138+ self.build_tree(['README'], transport=transport)
139+
140+ def make_upstream_tarball(self, upstream_version=None):
141+ if upstream_version is None:
142+ upstream_version = self.upstream_version
143+ upstream_dir = self._upstream_dir(self.package_name, upstream_version)
144+ self.make_unpacked_upstream_source(get_transport(upstream_dir))
145+ tar = tarfile.open(
146+ self._upstream_tarball_name(self.package_name, upstream_version),
147+ 'w:gz')
148+ try:
149+ tar.add(upstream_dir)
150+ finally:
151+ tar.close()
152+ return upstream_dir
153+
154+ def make_debian_dir(self, debian_dir, version=None):
155+ os.mkdir(debian_dir)
156+ cl = self.make_changelog(version=version)
157+ self.write_changelog(cl, os.path.join(debian_dir, 'changelog'))
158+ f = open(os.path.join(debian_dir, 'control'), 'wb')
159+ try:
160+ f.write('Source: %s\n' % self.package_name)
161+ f.write('Maintainer: none\n')
162+ f.write('Standards-Version: 3.7.2\n')
163+ f.write('\n')
164+ f.write('Package: %s\n' % self.package_name)
165+ f.write('Architecture: all\n')
166+ finally:
167+ f.close()
168+
169+ def make_real_source_package(self, version=None):
170+ if version is None:
171+ version = self.package_version
172+ version = Version(version)
173+ upstream_version = version.upstream_version
174+ upstream_dir = self.make_upstream_tarball(upstream_version)
175+ debian_dir = os.path.join(upstream_dir, 'debian')
176+ self.make_debian_dir(debian_dir, version=version)
177+ proc = subprocess.Popen('dpkg-source -b %s' % upstream_dir,
178 shell=True, stdout=subprocess.PIPE)
179- proc.wait()
180- self.assertEqual(proc.returncode, 0)
181- shutil.rmtree(self.upstream_dir)
182+ proc.wait()
183+ self.assertEqual(proc.returncode, 0)
184+ shutil.rmtree(upstream_dir)
185+ dsc_name = "%s_%s.dsc" % (self.package_name, version)
186+ return dsc_name
187
188
189 class TestImportDsc(TestBaseImportDsc):
190
191- def test_import_dsc(self):
192- self.requireFeature(PristineTarFeature)
193- self.make_real_source_package()
194- tree = self.make_branch_and_tree('.')
195- self.run_bzr('import-dsc %s' % self.dsc_name)
196- tree.lock_read()
197- expected_shape = ['README', 'debian/', 'debian/changelog',
198- 'debian/control']
199- try:
200- if getattr(self, "check_tree_shape", None):
201- self.check_tree_shape(tree, expected_shape)
202- else:
203- self.check_inventory_shape(tree.inventory, expected_shape)
204- finally:
205- tree.unlock()
206- self.assertEqual(len(tree.branch.revision_history()), 2)
207-
208- def test_import_no_files(self):
209- self.make_branch_and_tree('.')
210- self.make_real_source_package()
211- self.run_bzr_error(['You must give the location of at least one source '
212- 'package.'], 'import-dsc')
213-
214-
215-# vim: ts=2 sts=2 sw=2
216+ def test_import_dsc_incremental(self):
217+ self.requireFeature(PristineTarFeature)
218+ tree = self.make_branch_and_tree('.')
219+ dsc_name = self.make_real_source_package(version="0.1-1")
220+ self.run_bzr('import-dsc %s' % dsc_name)
221+ dsc_name = self.make_real_source_package(version="0.2-1")
222+ self.run_bzr('import-dsc %s' % dsc_name)
223+ tree.lock_read()
224+ expected_shape = ['README', 'debian/', 'debian/changelog',
225+ 'debian/control']
226+ try:
227+ if getattr(self, "check_tree_shape", None):
228+ self.check_tree_shape(tree, expected_shape)
229+ else:
230+ self.check_inventory_shape(tree.inventory, expected_shape)
231+ finally:
232+ tree.unlock()
233+ self.assertEqual(len(tree.branch.revision_history()), 3)
234+
235+ def test_import_dsc(self):
236+ self.requireFeature(PristineTarFeature)
237+ dsc_name = self.make_real_source_package()
238+ tree = self.make_branch_and_tree('.')
239+ self.run_bzr('import-dsc %s' % dsc_name)
240+ tree.lock_read()
241+ expected_shape = ['README', 'debian/', 'debian/changelog',
242+ 'debian/control']
243+ try:
244+ if getattr(self, "check_tree_shape", None):
245+ self.check_tree_shape(tree, expected_shape)
246+ else:
247+ self.check_inventory_shape(tree.inventory, expected_shape)
248+ finally:
249+ tree.unlock()
250+ self.assertEqual(len(tree.branch.revision_history()), 2)
251+
252+ def test_import_no_files(self):
253+ self.make_branch_and_tree('.')
254+ self.make_real_source_package()
255+ self.run_bzr_error(
256+ ['You must give the location of at least one source package.'],
257+ 'import-dsc')

Subscribers

People subscribed via source and target branches