Merge lp:~jelmer/bzr-builddeb/merge-upstream-branch-revision into lp:bzr-builddeb

Proposed by Jelmer Vernooij
Status: Merged
Approved by: James Westby
Approved revision: 554
Merged at revision: 553
Proposed branch: lp:~jelmer/bzr-builddeb/merge-upstream-branch-revision
Merge into: lp:bzr-builddeb
Diff against target: 180 lines (+68/-11)
7 files modified
cmds.py (+10/-2)
debian/changelog (+7/-0)
merge_upstream.py (+2/-2)
tests/blackbox/test_merge_upstream.py (+19/-3)
tests/test_upstream.py (+18/-0)
upstream/__init__.py (+2/-0)
upstream/branch.py (+10/-4)
To merge this branch: bzr merge lp:~jelmer/bzr-builddeb/merge-upstream-branch-revision
Reviewer Review Type Date Requested Status
James Westby Approve
Review via email: mp+59390@code.launchpad.net

Description of the change

In merge-upstream when there is a upstream branch known, always use it or complain to the
user when the upstream version could not be mapped to a revision, rather than silently
ignoring the upstream branch.

To post a comment you must log in.
554. By Jelmer Vernooij

Add another test.

Revision history for this message
James Westby (james-w) :
review: Approve
Revision history for this message
James Westby (james-w) wrote :

Thanks Jelmer.

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-03-29 20:47:21 +0000
3+++ cmds.py 2011-04-28 16:03:31 +0000
4@@ -70,6 +70,7 @@
5 BuildFailedError,
6 MissingChangelogError,
7 NoPreviousUpload,
8+ PackageVersionNotPresent,
9 StrictBuildFailed,
10 )
11 from bzrlib.plugins.builddeb.hooks import run_hook
12@@ -717,8 +718,15 @@
13 note("Using version string %s." % (version))
14 # Look up the revision id from the version string
15 if upstream_revision is None and upstream_branch_source is not None:
16- upstream_revision = upstream_branch_source.version_as_revision(
17- package, version)
18+ try:
19+ upstream_revision = upstream_branch_source.version_as_revision(
20+ package, version)
21+ except PackageVersionNotPresent:
22+ raise BzrCommandError(
23+ "Version %s can not be found in upstream branch %r. "
24+ "Specify the revision manually using --revision or adjust "
25+ "'export-upstream-revision' in the configuration." %
26+ (version, upstream_branch_source))
27 if need_upstream_tarball:
28 target_dir = tempfile.mkdtemp() # FIXME: Cleanup?
29 location = primary_upstream_source.fetch_tarball(
30
31=== modified file 'debian/changelog'
32--- debian/changelog 2011-04-19 21:51:12 +0000
33+++ debian/changelog 2011-04-28 16:03:31 +0000
34@@ -1,3 +1,10 @@
35+bzr-builddeb (2.7.4) UNRELEASED; urgency=low
36+
37+ * In 'bzr merge-usptream', don't ignore upstream branch when upstream
38+ version can not be found. LP: #772424
39+
40+ -- Jelmer Vernooij <jelmer@debian.org> Thu, 28 Apr 2011 16:50:38 +0200
41+
42 bzr-builddeb (2.7.3) unstable; urgency=low
43
44 [ Jelmer Vernooij ]
45
46=== modified file 'merge_upstream.py'
47--- merge_upstream.py 2011-02-03 22:45:27 +0000
48+++ merge_upstream.py 2011-04-28 16:03:31 +0000
49@@ -92,8 +92,8 @@
50 proc = subprocess.Popen(["dch", "-v",
51 str(package_version(upstream_version, distribution_name,
52 changelog.epoch)),
53- "-D", "UNRELEASED", "--release-heuristic", "changelog", entry_description],
54- cwd=tree.basedir)
55+ "-D", "UNRELEASED", "--release-heuristic", "changelog",
56+ entry_description], cwd=tree.basedir)
57 proc.wait()
58 # FIXME: Raise insightful exception here rather than just checking
59 # return code.
60
61=== modified file 'tests/blackbox/test_merge_upstream.py'
62--- tests/blackbox/test_merge_upstream.py 2011-02-27 16:15:50 +0000
63+++ tests/blackbox/test_merge_upstream.py 2011-04-28 16:03:31 +0000
64@@ -139,7 +139,9 @@
65 return result
66
67 def release_upstream(self, upstream):
68- tar = ExportedTarball(upstream, version=self.getUniqueInteger())
69+ version = str(self.getUniqueInteger())
70+ upstream.tree.branch.tags.set_tag(version, upstream.tree.branch.last_revision())
71+ tar = ExportedTarball(upstream, version=version)
72 tar.setUp(self)
73 return tar
74
75@@ -161,6 +163,21 @@
76 changed_upstream = self.file_moved_replaced_upstream(upstream)
77 rel2 = self.release_upstream(changed_upstream)
78 self.run_bzr(['merge-upstream', '--version', str(rel2.version),
79+ os.path.abspath(rel2.tarball)],
80+ working_dir=package.tree.basedir)
81+
82+ def test_upstream_branch_revision_not_found(self):
83+ # When an upstream branch is specified but does not have the
84+ # upstream version, 'bzr merge-upstream' should complain.
85+ upstream = self.make_upstream()
86+ rel1 = self.release_upstream(upstream)
87+ package = self.import_upstream(rel1, upstream)
88+ changed_upstream = self.file_moved_replaced_upstream(upstream)
89+ rel2 = self.release_upstream(changed_upstream)
90+ self.run_bzr_error([
91+ 'Using version string 8.',
92+ 'bzr: ERROR: Version 8 can not be found in upstream branch <UpstreamBranchSource for \'.*\'>. Specify the revision manually using --revision or adjust \'export-upstream-revision\' in the configuration.'],
93+ ['merge-upstream', '--version', str(rel2.version),
94 os.path.abspath(rel2.tarball), changed_upstream.tree.basedir],
95 working_dir=package.tree.basedir)
96
97@@ -178,8 +195,7 @@
98 changed_upstream = self.file_moved_replaced_upstream(upstream)
99 rel2 = self.release_upstream(changed_upstream)
100 self.run_bzr(['merge-upstream', '--version', str(rel2.version),
101- os.path.abspath(rel2.tarball), changed_upstream.tree.basedir],
102- working_dir=package.tree.basedir)
103+ os.path.abspath(rel2.tarball)], working_dir=package.tree.basedir)
104 self.failUnlessExists(os.path.join(package.tree.basedir, 'muhook'))
105
106 # vim: ts=4 sts=4 sw=4
107
108=== modified file 'tests/test_upstream.py'
109--- tests/test_upstream.py 2011-04-18 21:24:36 +0000
110+++ tests/test_upstream.py 2011-04-28 16:03:31 +0000
111@@ -365,6 +365,24 @@
112 source.version_as_revision("foo", "2.1+bzr2"))
113 self.assertEquals(revid1, source.version_as_revision("foo", "2.1"))
114
115+ def test_version_as_revision_no_revspec(self):
116+ # There is no relevant revspec known
117+ config = DebBuildConfig(
118+ [('user.conf', True), ('default.conf', False)],
119+ branch=self.tree.branch)
120+ source = UpstreamBranchSource(self.tree.branch, {}, config=config)
121+ self.assertRaises(PackageVersionNotPresent,
122+ source.version_as_revision, "foo", "2.1")
123+
124+ def test_version_as_revision_invalid_revspec(self):
125+ # There is no relevant revspec known
126+ config = DebBuildConfig(
127+ [('user.conf', True), ('default.conf', False)],
128+ branch=self.tree.branch)
129+ source = UpstreamBranchSource(self.tree.branch, {}, config=config)
130+ self.assertRaises(PackageVersionNotPresent,
131+ source.version_as_revision, "foo", "2.1+bzr4242")
132+
133
134 class LazyUpstreamBranchSourceTests(TestCaseWithTransport):
135 """Tests for LazyUpstreamBranchSource."""
136
137=== modified file 'upstream/__init__.py'
138--- upstream/__init__.py 2011-03-27 00:28:12 +0000
139+++ upstream/__init__.py 2011-04-28 16:03:31 +0000
140@@ -76,6 +76,8 @@
141
142 :param package: Package name
143 :package version: Version string
144+ :raise PackageVersionNotPresent: When the specified version was not
145+ found
146 """
147 raise NotImplementedError(self.version_as_revision)
148
149
150=== modified file 'upstream/branch.py'
151--- upstream/branch.py 2011-03-26 22:32:08 +0000
152+++ upstream/branch.py 2011-04-28 16:03:31 +0000
153@@ -21,7 +21,10 @@
154 import re
155
156 from bzrlib.branch import Branch
157-from bzrlib.errors import InvalidRevisionId
158+from bzrlib.errors import (
159+ InvalidRevisionId,
160+ InvalidRevisionSpec,
161+ )
162 from bzrlib.revisionspec import RevisionSpec
163 from bzrlib.trace import note
164
165@@ -232,9 +235,12 @@
166 else:
167 revspec = get_export_upstream_revision(self.config, version=version)
168 if revspec is not None:
169- return RevisionSpec.from_string(
170- revspec).as_revision_id(self.upstream_branch)
171- return None
172+ try:
173+ return RevisionSpec.from_string(
174+ revspec).as_revision_id(self.upstream_branch)
175+ except InvalidRevisionSpec:
176+ raise PackageVersionNotPresent(package, version, self)
177+ raise PackageVersionNotPresent(package, version, self)
178
179 def get_latest_version(self, package, current_version):
180 return self.get_version(package, current_version,

Subscribers

People subscribed via source and target branches