[git-buildpackage] [PATCH] dch: unmangle upstream_tag when guessing upstream version

Christos Trochalakis ctrochalakis at debian.org
Sat Jul 8 14:25:32 CEST 2017


Running `gbp dch` with a mangled upstream tag resulted in a KeyError
while trying to build a tag pattern.
---
 gbp/deb/git.py                     |  2 +-
 tests/03_test_dch_guess_version.py | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/gbp/deb/git.py b/gbp/deb/git.py
index 0a2bddc..edc8368 100644
--- a/gbp/deb/git.py
+++ b/gbp/deb/git.py
@@ -114,7 +114,7 @@ class DebianGitRepository(GitRepository):
         @returns: a new debian version
         @raises GitRepositoryError: if no upstream tag was found
         """
-        pattern = upstream_tag_format % dict(version='*')
+        pattern = self._unmangle_format(upstream_tag_format) % dict(version='*')
         tag = self.find_branch_tag(commit, upstream_branch, pattern=pattern)
         version = self.tag_to_version(tag, upstream_tag_format)
 
diff --git a/tests/03_test_dch_guess_version.py b/tests/03_test_dch_guess_version.py
index bd4389f..1677b4a 100644
--- a/tests/03_test_dch_guess_version.py
+++ b/tests/03_test_dch_guess_version.py
@@ -98,3 +98,22 @@ class TestGuessVersionFromUpstream(testutils.DebianGitTestRepo):
                                                   upstream_branch,
                                                   cp)
         self.assertEqual(None, guessed)
+
+    def test_guess_mangled_upstream_tag(self):
+        """Guess the new version from the upstream tag using a mangled tag format"""
+        cp = testutils.MockedChangeLog('1.0-1')
+        tagformat = 'upstream/%(version%~%-)s'
+        uversion = '1.1~rc1'
+        upstream_branch = 'upstream'
+
+        self.add_file('doesnot', 'matter')
+        self.repo.create_branch('upstream')
+        tag = self.repo.version_to_tag(tagformat, uversion)
+        self.repo.create_tag(name=tag, msg="Upstream release %s" % uversion,
+                             sign=False)
+        self.repo.set_branch("master")
+        guessed = dch.guess_version_from_upstream(self.repo,
+                                                  tagformat,
+                                                  upstream_branch,
+                                                  cp)
+        self.assertEqual('1.1~rc1-1', guessed)
-- 
2.13.2



More information about the git-buildpackage mailing list