~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: 2009-01-13 05:14:24 UTC
  • mfrom: (3936.1.3 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20090113051424-nrk3zkfe09h46i9y
(mbp) merge 1.11 and advance to 1.12

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2008 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
"""Black-box tests for bzr missing."""
18
18
 
26
26
 
27
27
class TestMissing(TestCaseWithTransport):
28
28
 
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
29
    def test_missing_quiet(self):
37
30
        # <https://bugs.launchpad.net/bzr/+bug/284748>
38
31
        # create a source branch
49
42
        self.assertEqual('', err)
50
43
 
51
44
    def test_missing(self):
52
 
        missing = "You are missing 1 revision:"
 
45
        missing = "You are missing 1 revision(s):"
53
46
 
54
47
        # create a source branch
55
48
        a_tree = self.make_branch_and_tree('a')
63
56
        b_tree.commit(message='more')
64
57
 
65
58
        # run missing in a against b
66
 
        # this should not require missing to take out a write lock on a
 
59
        # this should not require missing to take out a write lock on a 
67
60
        # or b. So we take a write lock on both to test that at the same
68
61
        # time. This may let the test pass while the default branch is an
69
62
        # os-locking branch, but it will trigger failures with lockdir based
92
85
 
93
86
        # compare again, but now we have the 'merge' commit extra
94
87
        lines = self.run_bzr('missing ../b', retcode=1)[0].splitlines()
95
 
        self.assertEqual("You have 1 extra revision:", lines[0])
 
88
        self.assertEqual("You have 1 extra revision(s):", lines[0])
96
89
        self.assertEqual(8, len(lines))
97
90
        lines2 = self.run_bzr('missing ../b --mine-only', retcode=1)[0]
98
91
        lines2 = lines2.splitlines()
99
92
        self.assertEqual(lines, lines2)
100
93
        lines3 = self.run_bzr('missing ../b --theirs-only', retcode=0)[0]
101
 
        self.assertEqualDiff('Other branch has no new revisions.\n', lines3)
 
94
        self.assertEqualDiff('Other branch is up to date.\n', lines3)
102
95
 
103
 
        # relative to a, missing the 'merge' commit
 
96
        # relative to a, missing the 'merge' commit 
104
97
        os.chdir('../b')
105
98
        lines = self.run_bzr('missing ../a', retcode=1)[0].splitlines()
106
99
        self.assertEqual(missing, lines[0])
109
102
        lines2 = lines2.splitlines()
110
103
        self.assertEqual(lines, lines2)
111
104
        lines3 = self.run_bzr('missing ../a --mine-only', retcode=0)[0]
112
 
        self.assertEqualDiff('This branch has no new revisions.\n', lines3)
 
105
        self.assertEqualDiff('This branch is up to date.\n', lines3)
113
106
        lines4 = self.run_bzr('missing ../a --short', retcode=1)[0]
114
107
        lines4 = lines4.splitlines()
115
108
        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
109
        lines5 = self.run_bzr('missing ../a --line', retcode=1)[0]
120
110
        lines5 = lines5.splitlines()
121
111
        self.assertEqual(2, len(lines5))
131
121
        self.assertEqual("  a", lines8[-1])
132
122
 
133
123
        os.chdir('../a')
134
 
        self.assertEqualDiff('Other branch has no new revisions.\n',
 
124
        self.assertEqualDiff('Other branch is up to date.\n',
135
125
                             self.run_bzr('missing ../b --theirs-only')[0])
136
126
 
137
127
        # after a pull we're back on track
142
132
        self.assertEqualDiff('Branches are up to date.\n',
143
133
                             self.run_bzr('missing ../a')[0])
144
134
        # 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',
 
135
        self.assertEqualDiff('This branch is up to date.\n',
146
136
                             self.run_bzr('missing ../a --mine-only')[0])
147
 
        self.assertEqualDiff('Other branch has no new revisions.\n',
 
137
        self.assertEqualDiff('Other branch is up to date.\n',
148
138
                             self.run_bzr('missing ../a --theirs-only')[0])
149
139
 
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'))
183
 
 
184
140
    def test_missing_check_last_location(self):
185
141
        # check that last location shown as filepath not file URL
186
142
 
203
159
                          'Branches are up to date.\n' % location,
204
160
                          lines)
205
161
        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)