aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/03_test_dch_guess_version.py
blob: 37f6da35198f9827a51a25a6f39bc42165a91d05 (plain)
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
# vim: set fileencoding=utf-8 :

"""Test L{Changelog}'s guess_version_from_upstream"""

from . import context  # noqa: F401
from . import testutils

from gbp.scripts import dch


class TestGuessVersionFromUpstream(testutils.DebianGitTestRepo):
    """Test guess_version_from_upstream"""

    def test_guess_no_epoch(self):
        """Guess the new version from the upstream tag"""
        cp = testutils.MockedChangeLog('1.0-1')
        tagformat = 'upstream/%(version)s'
        uversion = '1.1'
        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-1', guessed)

    def test_guess_epoch(self):
        """Check if we picked up the epoch correctly (#652366)"""
        cp = testutils.MockedChangeLog('1:1.0-1')

        tagformat = 'upstream/%(version)s'
        uversion = '1.1'
        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.1-1', guessed)

    def test_guess_upstream_tag_clash_with_non_upstream_tag(self):
        """Guess with clashing upstream- and non-upstream-tag"""
        cp = testutils.MockedChangeLog('0.9-1')

        tagformat = 'v%(version)s'
        uversion = '1.0'
        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")
        self.add_file("clash", "bar")
        self.repo.create_tag("vyatta/something", msg="some non-upstream tag but not package release tag either")
        self.add_file("clash2", "bar")

        guessed = dch.guess_version_from_upstream(self.repo,
                                                  tagformat,
                                                  upstream_branch,
                                                  cp)

        self.assertEqual('1.0-1', guessed)

    def test_guess_upstream_tag_zero_release(self):
        """Guess with existing -0... releases"""
        cp = testutils.MockedChangeLog('0.9-0vyatta2')

        tagformat = 'upstream/%(version)s'
        uversion = '0.9'
        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')
        self.add_file('doesnot2', 'matter')

        guessed = dch.guess_version_from_upstream(self.repo,
                                                  tagformat,
                                                  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)

    def test_no_changelog(self):
        tagformat = 'upstream/%(version)s'
        uversion = '1.1'
        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,
                                                  None)
        self.assertEqual('1.1-1', guessed)