~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_missing.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-03-16 14:01:20 UTC
  • mfrom: (3280.2.5 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20080316140120-i3yq8yr1l66m11h7
Start 1.4 development

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005 Canonical Ltd
 
2
# -*- coding: utf-8 -*-
 
3
# vim: encoding=utf-8
2
4
#
3
5
# This program is free software; you can redistribute it and/or modify
4
6
# it under the terms of the GNU General Public License as published by
12
14
#
13
15
# You should have received a copy of the GNU General Public License
14
16
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
18
 
17
19
"""Black-box tests for bzr missing."""
18
20
 
26
28
 
27
29
class TestMissing(TestCaseWithTransport):
28
30
 
29
 
    def assertMessages(self, out, must_have=(), must_not_have=()):
30
 
        """Check if commit messages are in or not in the output"""
31
 
        for m in must_have:
32
 
            self.assertContainsRe(out, r'\nmessage:\n  %s\n' % m)
33
 
        for m in must_not_have:
34
 
            self.assertNotContainsRe(out, r'\nmessage:\n  %s\n' % m)
35
 
 
36
 
    def test_missing_quiet(self):
37
 
        # <https://bugs.launchpad.net/bzr/+bug/284748>
38
 
        # create a source branch
39
 
        #
40
 
        # XXX: This still needs a test that missing is quiet when there are
41
 
        # missing revisions.
42
 
        a_tree = self.make_branch_and_tree('.')
43
 
        self.build_tree_contents([('a', 'initial\n')])
44
 
        a_tree.add('a')
45
 
        a_tree.commit(message='initial')
46
 
 
47
 
        out, err = self.run_bzr('missing -q .')
48
 
        self.assertEqual('', out)
49
 
        self.assertEqual('', err)
50
 
 
51
31
    def test_missing(self):
52
 
        missing = "You are missing 1 revision:"
 
32
        missing = "You are missing 1 revision(s):"
53
33
 
54
34
        # create a source branch
55
35
        a_tree = self.make_branch_and_tree('a')
63
43
        b_tree.commit(message='more')
64
44
 
65
45
        # run missing in a against b
66
 
        # this should not require missing to take out a write lock on a
 
46
        # this should not require missing to take out a write lock on a 
67
47
        # or b. So we take a write lock on both to test that at the same
68
48
        # time. This may let the test pass while the default branch is an
69
49
        # os-locking branch, but it will trigger failures with lockdir based
92
72
 
93
73
        # compare again, but now we have the 'merge' commit extra
94
74
        lines = self.run_bzr('missing ../b', retcode=1)[0].splitlines()
95
 
        self.assertEqual("You have 1 extra revision:", lines[0])
 
75
        self.assertEqual("You have 1 extra revision(s):", lines[0])
96
76
        self.assertEqual(8, len(lines))
97
77
        lines2 = self.run_bzr('missing ../b --mine-only', retcode=1)[0]
98
78
        lines2 = lines2.splitlines()
99
79
        self.assertEqual(lines, lines2)
100
 
        lines3 = self.run_bzr('missing ../b --theirs-only', retcode=0)[0]
101
 
        self.assertEqualDiff('Other branch has no new revisions.\n', lines3)
 
80
        lines3 = self.run_bzr('missing ../b --theirs-only', retcode=1)[0]
 
81
        lines3 = lines3.splitlines()
 
82
        self.assertEqual(0, len(lines3))
102
83
 
103
 
        # relative to a, missing the 'merge' commit
 
84
        # relative to a, missing the 'merge' commit 
104
85
        os.chdir('../b')
105
86
        lines = self.run_bzr('missing ../a', retcode=1)[0].splitlines()
106
87
        self.assertEqual(missing, lines[0])
108
89
        lines2 = self.run_bzr('missing ../a --theirs-only', retcode=1)[0]
109
90
        lines2 = lines2.splitlines()
110
91
        self.assertEqual(lines, lines2)
111
 
        lines3 = self.run_bzr('missing ../a --mine-only', retcode=0)[0]
112
 
        self.assertEqualDiff('This branch has no new revisions.\n', lines3)
 
92
        lines3 = self.run_bzr('missing ../a --mine-only', retcode=1)[0]
 
93
        lines3 = lines3.splitlines()
 
94
        self.assertEqual(0, len(lines3))
113
95
        lines4 = self.run_bzr('missing ../a --short', retcode=1)[0]
114
96
        lines4 = lines4.splitlines()
115
97
        self.assertEqual(4, len(lines4))
116
 
        lines4a = self.run_bzr('missing ../a -S', retcode=1)[0]
117
 
        lines4a = lines4a.splitlines()
118
 
        self.assertEqual(lines4, lines4a)
119
98
        lines5 = self.run_bzr('missing ../a --line', retcode=1)[0]
120
99
        lines5 = lines5.splitlines()
121
100
        self.assertEqual(2, len(lines5))
130
109
        self.assertEqual("modified:", lines8[-2])
131
110
        self.assertEqual("  a", lines8[-1])
132
111
 
133
 
        os.chdir('../a')
134
 
        self.assertEqualDiff('Other branch has no new revisions.\n',
135
 
                             self.run_bzr('missing ../b --theirs-only')[0])
136
 
 
137
112
        # after a pull we're back on track
138
113
        b_tree.pull(a_branch)
139
 
        self.assertEqualDiff("Branches are up to date.\n",
140
 
                             self.run_bzr('missing ../b')[0])
141
 
        os.chdir('../b')
142
 
        self.assertEqualDiff('Branches are up to date.\n',
143
 
                             self.run_bzr('missing ../a')[0])
144
 
        # If you supply mine or theirs you only know one side is up to date
145
 
        self.assertEqualDiff('This branch has no new revisions.\n',
146
 
                             self.run_bzr('missing ../a --mine-only')[0])
147
 
        self.assertEqualDiff('Other branch has no new revisions.\n',
148
 
                             self.run_bzr('missing ../a --theirs-only')[0])
149
 
 
150
 
    def test_missing_filtered(self):
151
 
        # create a source branch
152
 
        a_tree = self.make_branch_and_tree('a')
153
 
        self.build_tree_contents([('a/a', 'initial\n')])
154
 
        a_tree.add('a')
155
 
        a_tree.commit(message='r1')
156
 
        # clone and add differing revisions
157
 
        b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
158
 
 
159
 
        for i in range(2, 6):
160
 
            a_tree.commit(message='a%d' % i)
161
 
            b_tree.commit(message='b%d' % i)
162
 
 
163
 
        os.chdir('a')
164
 
        # local
165
 
        out,err = self.run_bzr('missing ../b --my-revision 3', retcode=1)
166
 
        self.assertMessages(out, ('a3', 'b2', 'b3', 'b4', 'b5'), ('a2', 'a4'))
167
 
 
168
 
        out,err = self.run_bzr('missing ../b --my-revision 3..4', retcode=1)
169
 
        self.assertMessages(out, ('a3', 'a4'), ('a2', 'a5'))
170
 
 
171
 
        #remote
172
 
        out,err = self.run_bzr('missing ../b -r 3', retcode=1)
173
 
        self.assertMessages(out, ('a2', 'a3', 'a4', 'a5', 'b3'), ('b2', 'b4'))
174
 
 
175
 
        out,err = self.run_bzr('missing ../b -r 3..4', retcode=1)
176
 
        self.assertMessages(out, ('b3', 'b4'), ('b2', 'b5'))
177
 
 
178
 
        #both
179
 
        out,err = self.run_bzr('missing ../b --my-revision 3..4 -r 3..4',
180
 
            retcode=1)
181
 
        self.assertMessages(out, ('a3', 'a4', 'b3', 'b4'),
182
 
            ('a2', 'a5', 'b2', 'b5'))
 
114
        self.assertEqual("Branches are up to date.\n", self.run_bzr('missing ../a')[0])
183
115
 
184
116
    def test_missing_check_last_location(self):
185
117
        # check that last location shown as filepath not file URL
199
131
 
200
132
        # check last location
201
133
        lines, err = self.run_bzr('missing', working_dir='../b')
202
 
        self.assertEquals('Using saved parent location: %s\n'
 
134
        self.assertEquals('Using last location: %s\n'
203
135
                          'Branches are up to date.\n' % location,
204
136
                          lines)
205
137
        self.assertEquals('', err)
206
 
 
207
 
    def test_missing_directory(self):
208
 
        """Test --directory option"""
209
 
 
210
 
        # create a source branch
211
 
        a_tree = self.make_branch_and_tree('a')
212
 
        self.build_tree_contents([('a/a', 'initial\n')])
213
 
        a_tree.add('a')
214
 
        a_tree.commit(message='initial')
215
 
 
216
 
        # clone and add a differing revision
217
 
        b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
218
 
        self.build_tree_contents([('b/a', 'initial\nmore\n')])
219
 
        b_tree.commit(message='more')
220
 
 
221
 
        out2, err2 = self.run_bzr('missing --directory a b', retcode=1)
222
 
        os.chdir('a')
223
 
        out1, err1 = self.run_bzr('missing ../b', retcode=1)
224
 
        self.assertEqualDiff(out1, out2)
225
 
        self.assertEqualDiff(err1, err2)