~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Vincent Ladeuil
  • Date: 2009-12-14 15:51:36 UTC
  • mto: (4894.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 4895.
  • Revision ID: v.ladeuil+lp@free.fr-20091214155136-rf4nkqvxda9oiw4u
Cleanup tests and tweak the text displayed.

* bzrlib/tests/blackbox/test_update.py:
Fix imports and replace the assertContainsRe with assertEqualDiff
to make the test clearer, more robust and easier to debug.

* bzrlib/tests/commands/test_update.py: 
Fix imports.

* bzrlib/tests/blackbox/test_filtered_view_ops.py: 
Fix imports and strange accesses to base class methods.
(TestViewTreeOperations.test_view_on_update): Avoid os.chdir()
call, simplify string matching assertions.

* bzrlib/builtins.py:
(cmd_update.run): Fix spurious space, get rid of the final '/' for
the base path, don't add a final period (it's a legal char in a
path and would be annoying for people that like to copy/paste).

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 
19
19
"""Tests for the update command of bzr."""
20
20
 
21
 
import os, re
22
 
 
23
 
from bzrlib import branch, bzrdir
24
 
from bzrlib.tests.blackbox import ExternalBase
25
 
from bzrlib.workingtree import WorkingTree
26
 
from bzrlib.osutils import pathjoin
27
 
 
28
 
 
29
 
class TestUpdate(ExternalBase):
 
21
import os
 
22
import re
 
23
 
 
24
from bzrlib import (
 
25
    branch,
 
26
    bzrdir,
 
27
    osutils,
 
28
    tests,
 
29
    urlutils,
 
30
    workingtree,
 
31
    )
 
32
 
 
33
 
 
34
class TestUpdate(tests.TestCaseWithTransport):
30
35
 
31
36
    def test_update_standalone_trivial(self):
32
37
        self.make_branch_and_tree('.')
33
38
        out, err = self.run_bzr('update')
34
 
        self.assertContainsRe(err, 'Tree is up to date at revision 0'
35
 
                                   ' of branch %s.' % re.escape(self.test_dir))
 
39
        self.assertEqual(
 
40
            'Tree is up to date at revision 0 of branch %s\n' % self.test_dir,
 
41
            err)
36
42
        self.assertEqual('', out)
37
43
 
38
44
    def test_update_quiet(self):
44
50
    def test_update_standalone_trivial_with_alias_up(self):
45
51
        self.make_branch_and_tree('.')
46
52
        out, err = self.run_bzr('up')
47
 
        self.assertContainsRe(err, 'Tree is up to date at revision 0'
48
 
                                   ' of branch %s.' % re.escape(self.test_dir))
 
53
        self.assertEqual('Tree is up to date at revision 0 of branch %s\n'
 
54
                         % self.test_dir,
 
55
                         err)
49
56
        self.assertEqual('', out)
50
57
 
51
58
    def test_update_up_to_date_light_checkout(self):
52
59
        self.make_branch_and_tree('branch')
53
60
        self.run_bzr('checkout --lightweight branch checkout')
54
61
        out, err = self.run_bzr('update checkout')
55
 
        branch_path = pathjoin(self.test_dir, 'branch/')
56
 
        self.assertContainsRe(err, 'Tree is up to date at revision 0'
57
 
                                   ' of branch %s.' % re.escape(branch_path))
 
62
        self.assertEqual('Tree is up to date at revision 0 of branch %s\n'
 
63
                         % osutils.pathjoin(self.test_dir, 'branch'),
 
64
                         err)
58
65
        self.assertEqual('', out)
59
66
 
60
67
    def test_update_up_to_date_checkout(self):
61
68
        self.make_branch_and_tree('branch')
62
69
        self.run_bzr('checkout branch checkout')
63
70
        out, err = self.run_bzr('update checkout')
64
 
        branch_path = pathjoin(self.test_dir, 'branch/')
65
 
        self.assertContainsRe(err, 'Tree is up to date at revision 0'
66
 
                                   ' of branch %s.' % re.escape(branch_path))
 
71
        self.assertEqual('Tree is up to date at revision 0 of branch %s\n'
 
72
                         % osutils.pathjoin(self.test_dir, 'branch'),
 
73
                         err)
67
74
        self.assertEqual('', out)
68
75
 
69
76
    def test_update_out_of_date_standalone_tree(self):
78
85
        # now branch should be out of date
79
86
        out,err = self.run_bzr('update branch')
80
87
        self.assertEqual('', out)
81
 
        self.assertContainsRe(err, '\+N  file')
82
 
        self.assertContainsRe(err, 'All changes applied successfully.')
83
 
        branch_path = pathjoin(self.test_dir, 'branch/')
84
 
        self.assertContainsRe(err, 'Updated to revision 1 of branch %s.' %
85
 
                                    re.escape(branch_path))
 
88
        self.assertEqualDiff("""+N  file
 
89
All changes applied successfully.
 
90
Updated to revision 1 of branch %s
 
91
""" % osutils.pathjoin(self.test_dir, 'branch',),
 
92
                         err)
86
93
        self.failUnlessExists('branch/file')
87
94
 
88
95
    def test_update_out_of_date_light_checkout(self):
95
102
        self.run_bzr('commit -m add-file checkout')
96
103
        # now checkout2 should be out of date
97
104
        out,err = self.run_bzr('update checkout2')
98
 
        self.assertContainsRe(err, '\+N  file')
99
 
        self.assertContainsRe(err, r'All changes applied successfully\.')
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))
 
105
        self.assertEqualDiff('''+N  file
 
106
All changes applied successfully.
 
107
Updated to revision 1 of branch %s
 
108
''' % osutils.pathjoin(self.test_dir, 'branch',),
 
109
                         err)
103
110
        self.assertEqual('', out)
104
111
 
105
112
    def test_update_conflicts_returns_2(self):
121
128
        a_file.write('Bar')
122
129
        a_file.close()
123
130
        out,err = self.run_bzr('update checkout2', retcode=1)
124
 
        self.assertContainsRe(err, 'M  file')
125
 
        self.assertContainsRe(err, '1 conflicts encountered.')
126
 
        branch_path = pathjoin(self.test_dir, 'branch/')
127
 
        self.assertContainsRe(err, 'Updated to revision 2 of branch %s.' %
128
 
                                    re.escape(branch_path))
129
 
        self.assertContainsRe(err, 'Text conflict in file\n')
 
131
        self.assertEqualDiff(''' M  file
 
132
Text conflict in file
 
133
1 conflicts encountered.
 
134
Updated to revision 2 of branch %s
 
135
''' % osutils.pathjoin(self.test_dir, 'branch',),
 
136
                         err)
130
137
        self.assertEqual('', out)
131
138
 
132
139
    def test_smoke_update_checkout_bound_branch_local_commits(self):
136
143
        # make a bound branch
137
144
        self.run_bzr('checkout master child')
138
145
        # get an object form of child
139
 
        child = WorkingTree.open('child')
 
146
        child = workingtree.WorkingTree.open('child')
140
147
        # check that out
141
148
        self.run_bzr('checkout --lightweight child checkout')
142
149
        # get an object form of the checkout to manipulate
143
 
        wt = WorkingTree.open('checkout')
 
150
        wt = workingtree.WorkingTree.open('checkout')
144
151
        # change master
145
152
        a_file = file('master/file', 'wt')
146
153
        a_file.write('Foo')
163
170
        # get all three files and a pending merge.
164
171
        out, err = self.run_bzr('update checkout')
165
172
        self.assertEqual('', out)
166
 
        self.assertContainsRe(err, '\+N  file')
167
 
        self.assertContainsRe(err, '\+N  file_b')
168
 
        branch_path = pathjoin(self.test_dir, 'master/')
169
 
        self.assertContainsRe(err, 'Updated to revision 1 of branch %s.' %
170
 
                                    re.escape(branch_path))
171
 
        self.assertContainsRe(err, 'Your local commits will now show as'
172
 
                                   ' pending merges')
 
173
        self.assertEqualDiff("""+N  file
 
174
All changes applied successfully.
 
175
+N  file_b
 
176
All changes applied successfully.
 
177
Updated to revision 1 of branch %s
 
178
Your local commits will now show as pending merges with 'bzr status', and can be committed with 'bzr commit'.
 
179
""" % osutils.pathjoin(self.test_dir, 'master',),
 
180
                         err)
173
181
        self.assertEqual([master_tip, child_tip], wt.get_parent_ids())
174
182
        self.failUnlessExists('checkout/file')
175
183
        self.failUnlessExists('checkout/file_b')
215
223
        # merges, because they were real merges
216
224
        out, err = self.run_bzr('update')
217
225
        self.assertEqual('', out)
218
 
        self.assertContainsRe(err, 'All changes applied successfully.')
219
 
        branch_path = pathjoin(self.test_dir, 'master/')
220
 
        self.assertContainsRe(err, 'Updated to revision 2 of branch %s.' %
221
 
                                    re.escape(branch_path))
222
 
        self.assertContainsRe(err, r'\+N  file3')
 
226
        self.assertEqualDiff('''+N  file3
 
227
All changes applied successfully.
 
228
Updated to revision 2 of branch %s
 
229
''' % osutils.pathjoin(self.test_dir, 'master',),
 
230
                         err)
223
231
        # The pending merges should still be there
224
232
        self.assertEqual(['o2'], checkout1.get_parent_ids()[1:])
225
233