19
19
"""Tests for the update command of bzr."""
23
23
from bzrlib import branch, bzrdir
24
24
from bzrlib.tests.blackbox import ExternalBase
25
25
from bzrlib.workingtree import WorkingTree
26
from bzrlib.osutils import pathjoin
28
29
class TestUpdate(ExternalBase):
31
32
self.make_branch_and_tree('.')
32
33
out, err = self.run_bzr('update')
33
34
self.assertContainsRe(err, 'Tree is up to date at revision 0'
35
' of branch %s.' % re.escape(self.test_dir))
35
36
self.assertEqual('', out)
37
38
def test_update_quiet(self):
44
45
self.make_branch_and_tree('.')
45
46
out, err = self.run_bzr('up')
46
47
self.assertContainsRe(err, 'Tree is up to date at revision 0'
48
' of branch %s.' % re.escape(self.test_dir))
48
49
self.assertEqual('', out)
50
51
def test_update_up_to_date_light_checkout(self):
51
52
self.make_branch_and_tree('branch')
52
53
self.run_bzr('checkout --lightweight branch checkout')
53
54
out, err = self.run_bzr('update checkout')
55
branch_path = pathjoin(self.test_dir, 'branch/')
54
56
self.assertContainsRe(err, 'Tree is up to date at revision 0'
57
' of branch %s.' % re.escape(branch_path))
56
58
self.assertEqual('', out)
58
60
def test_update_up_to_date_checkout(self):
59
61
self.make_branch_and_tree('branch')
60
62
self.run_bzr('checkout branch checkout')
61
63
out, err = self.run_bzr('update checkout')
64
branch_path = pathjoin(self.test_dir, 'branch/')
62
65
self.assertContainsRe(err, 'Tree is up to date at revision 0'
66
' of branch %s.' % re.escape(branch_path))
64
67
self.assertEqual('', out)
66
69
def test_update_out_of_date_standalone_tree(self):
77
80
self.assertEqual('', out)
78
81
self.assertContainsRe(err, '\+N file')
79
82
self.assertContainsRe(err, 'All changes applied successfully.')
80
self.assertContainsRe(err, 'Updated to revision 1 of branch .*.')
83
branch_path = pathjoin(self.test_dir, 'branch/')
84
self.assertContainsRe(err, 'Updated to revision 1 of branch %s.' %
85
re.escape(branch_path))
81
86
self.failUnlessExists('branch/file')
83
88
def test_update_out_of_date_light_checkout(self):
92
97
out,err = self.run_bzr('update checkout2')
93
98
self.assertContainsRe(err, '\+N file')
94
99
self.assertContainsRe(err, r'All changes applied successfully\.')
95
self.assertContainsRe(err, r'Updated to revision 1 of branch .*.')
100
branch_path = pathjoin(self.test_dir, 'branch/')
101
self.assertContainsRe(err, r'Updated to revision 1 of branch %s.' %
102
re.escape(branch_path))
96
103
self.assertEqual('', out)
98
105
def test_update_conflicts_returns_2(self):
116
123
out,err = self.run_bzr('update checkout2', retcode=1)
117
124
self.assertContainsRe(err, 'M file')
118
125
self.assertContainsRe(err, '1 conflicts encountered.')
119
self.assertContainsRe(err, 'Updated to revision 2 of branch .*.')
126
branch_path = pathjoin(self.test_dir, 'branch/')
127
self.assertContainsRe(err, 'Updated to revision 2 of branch %s.' %
128
re.escape(branch_path))
120
129
self.assertContainsRe(err, 'Text conflict in file\n')
121
130
self.assertEqual('', out)
156
165
self.assertEqual('', out)
157
166
self.assertContainsRe(err, '\+N file')
158
167
self.assertContainsRe(err, '\+N file_b')
159
self.assertContainsRe(err, 'Updated to revision 1 of branch .*.')
168
branch_path = pathjoin(self.test_dir, 'master/')
169
self.assertContainsRe(err, 'Updated to revision 1 of branch %s.' %
170
re.escape(branch_path))
160
171
self.assertContainsRe(err, 'Your local commits will now show as'
161
172
' pending merges')
162
173
self.assertEqual([master_tip, child_tip], wt.get_parent_ids())
205
216
out, err = self.run_bzr('update')
206
217
self.assertEqual('', out)
207
218
self.assertContainsRe(err, 'All changes applied successfully.')
208
self.assertContainsRe(err, 'Updated to revision 2 of branch .*.')
219
branch_path = pathjoin(self.test_dir, 'master/')
220
self.assertContainsRe(err, 'Updated to revision 2 of branch %s.' %
221
re.escape(branch_path))
209
222
self.assertContainsRe(err, r'\+N file3')
210
223
# The pending merges should still be there
211
224
self.assertEqual(['o2'], checkout1.get_parent_ids()[1:])