~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: John Arbash Meinel
  • Date: 2006-08-23 22:18:16 UTC
  • mto: This revision was merged to the branch mainline in revision 1955.
  • Revision ID: john@arbash-meinel.com-20060823221816-832d30e909734e97
Rename test_aftp_transport to test_ftp_tranpsport

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006 Canonical Ltd
 
1
# Copyright (C) 2006 by Canonical Ltd
2
2
# -*- coding: utf-8 -*-
3
3
#
4
4
# This program is free software; you can redistribute it and/or modify
21
21
import os
22
22
 
23
23
from bzrlib import branch, bzrdir
 
24
from bzrlib.tests import TestSkipped
24
25
from bzrlib.tests.blackbox import ExternalBase
25
26
from bzrlib.workingtree import WorkingTree
26
27
 
28
29
class TestUpdate(ExternalBase):
29
30
 
30
31
    def test_update_standalone_trivial(self):
31
 
        self.make_branch_and_tree('.')
32
 
        out, err = self.run_bzr('update')
 
32
        self.runbzr("init")
 
33
        out, err = self.runbzr('update')
33
34
        self.assertEqual('Tree is up to date at revision 0.\n', err)
34
35
        self.assertEqual('', out)
35
36
 
36
37
    def test_update_standalone_trivial_with_alias_up(self):
37
 
        self.make_branch_and_tree('.')
38
 
        out, err = self.run_bzr('up')
 
38
        self.runbzr("init")
 
39
        out, err = self.runbzr('up')
39
40
        self.assertEqual('Tree is up to date at revision 0.\n', err)
40
41
        self.assertEqual('', out)
41
42
 
42
43
    def test_update_up_to_date_light_checkout(self):
43
44
        self.make_branch_and_tree('branch')
44
 
        self.run_bzr('checkout --lightweight branch checkout')
45
 
        out, err = self.run_bzr('update checkout')
 
45
        self.runbzr('checkout --lightweight branch checkout')
 
46
        out, err = self.runbzr('update checkout')
46
47
        self.assertEqual('Tree is up to date at revision 0.\n', err)
47
48
        self.assertEqual('', out)
48
49
 
49
50
    def test_update_up_to_date_checkout(self):
50
51
        self.make_branch_and_tree('branch')
51
 
        self.run_bzr('checkout branch checkout')
52
 
        out, err = self.run_bzr('update checkout')
 
52
        self.run_bzr('checkout', 'branch', 'checkout')
 
53
        out, err = self.run_bzr('update', 'checkout')
53
54
        self.assertEqual('Tree is up to date at revision 0.\n', err)
54
55
        self.assertEqual('', out)
55
56
 
58
59
        # because it currently uses the branch last-revision marker.
59
60
        self.make_branch_and_tree('branch')
60
61
        # make a checkout
61
 
        self.run_bzr('checkout --lightweight branch checkout')
 
62
        self.runbzr('checkout --lightweight branch checkout')
62
63
        self.build_tree(['checkout/file'])
63
 
        self.run_bzr('add checkout/file')
64
 
        self.run_bzr('commit -m add-file checkout')
 
64
        self.runbzr('add checkout/file')
 
65
        self.runbzr('commit -m add-file checkout')
65
66
        # now branch should be out of date
66
 
        out,err = self.run_bzr('update branch')
 
67
        out,err = self.runbzr('update branch')
67
68
        self.assertEqual('', out)
68
 
        self.assertContainsRe(err, '\+N  file')
69
 
        self.assertEndsWith(err, 'All changes applied successfully.\n'
70
 
                         'Updated to revision 1.\n')
 
69
        self.assertEqual('All changes applied successfully.\n'
 
70
                         'Updated to revision 1.\n', err)
71
71
        self.failUnlessExists('branch/file')
72
72
 
73
73
    def test_update_out_of_date_light_checkout(self):
74
74
        self.make_branch_and_tree('branch')
75
75
        # make two checkouts
76
 
        self.run_bzr('checkout --lightweight branch checkout')
77
 
        self.run_bzr('checkout --lightweight branch checkout2')
 
76
        self.runbzr('checkout --lightweight branch checkout')
 
77
        self.runbzr('checkout --lightweight branch checkout2')
78
78
        self.build_tree(['checkout/file'])
79
 
        self.run_bzr('add checkout/file')
80
 
        self.run_bzr('commit -m add-file checkout')
 
79
        self.runbzr('add checkout/file')
 
80
        self.runbzr('commit -m add-file checkout')
81
81
        # now checkout2 should be out of date
82
 
        out,err = self.run_bzr('update checkout2')
83
 
        self.assertContainsRe(err, '\+N  file')
84
 
        self.assertEndsWith(err, 'All changes applied successfully.\n'
85
 
                         'Updated to revision 1.\n')
 
82
        out,err = self.runbzr('update checkout2')
 
83
        self.assertEqual('All changes applied successfully.\n'
 
84
                         'Updated to revision 1.\n',
 
85
                         err)
86
86
        self.assertEqual('', out)
87
87
 
88
88
    def test_update_conflicts_returns_2(self):
89
89
        self.make_branch_and_tree('branch')
90
90
        # make two checkouts
91
 
        self.run_bzr('checkout --lightweight branch checkout')
 
91
        self.runbzr('checkout --lightweight branch checkout')
92
92
        self.build_tree(['checkout/file'])
93
 
        self.run_bzr('add checkout/file')
94
 
        self.run_bzr('commit -m add-file checkout')
95
 
        self.run_bzr('checkout --lightweight branch checkout2')
 
93
        self.runbzr('add checkout/file')
 
94
        self.runbzr('commit -m add-file checkout')
 
95
        self.runbzr('checkout --lightweight branch checkout2')
96
96
        # now alter file in checkout
97
97
        a_file = file('checkout/file', 'wt')
98
98
        a_file.write('Foo')
99
99
        a_file.close()
100
 
        self.run_bzr('commit -m checnge-file checkout')
 
100
        self.runbzr('commit -m checnge-file checkout')
101
101
        # now checkout2 should be out of date
102
102
        # make a local change to file
103
103
        a_file = file('checkout2/file', 'wt')
104
104
        a_file.write('Bar')
105
105
        a_file.close()
106
 
        out,err = self.run_bzr('update checkout2', retcode=1)
107
 
        self.assertContainsRe(err, 'M  file')
 
106
        out,err = self.runbzr('update checkout2', retcode=1)
108
107
        self.assertEqual(['1 conflicts encountered.',
109
108
                          'Updated to revision 2.'],
110
 
                         err.split('\n')[-3:-1])
 
109
                         err.split('\n')[1:3])
111
110
        self.assertContainsRe(err, 'Text conflict in file\n')
112
111
        self.assertEqual('', out)
113
112
 
114
113
    def test_smoke_update_checkout_bound_branch_local_commits(self):
115
114
        # smoke test for doing an update of a checkout of a bound
116
115
        # branch with local commits.
117
 
        master = self.make_branch_and_tree('master')
 
116
        self.make_branch_and_tree('master')
118
117
        # make a bound branch
119
 
        self.run_bzr('checkout master child')
120
 
        # get an object form of child
121
 
        child = WorkingTree.open('child')
 
118
        self.run_bzr('checkout', 'master', 'child')
122
119
        # check that out
123
 
        self.run_bzr('checkout --lightweight child checkout')
124
 
        # get an object form of the checkout to manipulate
125
 
        wt = WorkingTree.open('checkout')
 
120
        self.run_bzr('checkout', '--lightweight', 'child', 'checkout')
126
121
        # change master
127
122
        a_file = file('master/file', 'wt')
128
123
        a_file.write('Foo')
129
124
        a_file.close()
130
 
        master.add(['file'])
131
 
        master_tip = master.commit('add file')
 
125
        self.run_bzr('add', 'master')
 
126
        self.run_bzr('commit', '-m', 'add file', 'master')
132
127
        # change child
133
128
        a_file = file('child/file_b', 'wt')
134
129
        a_file.write('Foo')
135
130
        a_file.close()
136
 
        child.add(['file_b'])
137
 
        child_tip = child.commit('add file_b', local=True)
 
131
        self.run_bzr('add', 'child')
 
132
        self.run_bzr('commit', '--local', '-m', 'add file_b', 'child')
138
133
        # check checkout
139
134
        a_file = file('checkout/file_c', 'wt')
140
135
        a_file.write('Foo')
141
136
        a_file.close()
142
 
        wt.add(['file_c'])
 
137
        self.run_bzr('add', 'checkout')
143
138
 
144
139
        # now, update checkout ->
145
140
        # get all three files and a pending merge.
146
 
        out, err = self.run_bzr('update checkout')
 
141
        out, err = self.run_bzr('update', 'checkout')
147
142
        self.assertEqual('', out)
148
 
        self.assertContainsRe(err, '\+N  file')
149
 
        self.assertContainsRe(err, '\+N  file_b')
150
143
        self.assertContainsRe(err, 'Updated to revision 1.\n'
151
144
                                   'Your local commits will now show as'
152
145
                                   ' pending merges')
153
 
        self.assertEqual([master_tip, child_tip], wt.get_parent_ids())
 
146
        wt = WorkingTree.open('checkout')
 
147
        self.assertNotEqual([], wt.pending_merges())
154
148
        self.failUnlessExists('checkout/file')
155
149
        self.failUnlessExists('checkout/file_b')
156
150
        self.failUnlessExists('checkout/file_c')
183
177
 
184
178
        # Merge the other branch into checkout
185
179
        os.chdir('checkout1')
186
 
        self.run_bzr('merge ../other')
 
180
        self.run_bzr('merge', '../other')
187
181
 
188
 
        self.assertEqual(['o2'], checkout1.get_parent_ids()[1:])
 
182
        self.assertEqual(['o2'], checkout1.pending_merges())
189
183
 
190
184
        # At this point, 'commit' should fail, because we are out of date
191
185
        self.run_bzr_error(["please run 'bzr update'"],
192
 
                           'commit -m merged')
 
186
                           'commit', '-m', 'merged')
193
187
 
194
188
        # This should not report about local commits being pending
195
189
        # merges, because they were real merges
196
190
        out, err = self.run_bzr('update')
197
191
        self.assertEqual('', out)
198
 
        self.assertEndsWith(err, 'All changes applied successfully.\n'
199
 
                         'Updated to revision 2.\n')
200
 
        self.assertContainsRe(err, r'\+N  file3')
 
192
        self.assertEqual('All changes applied successfully.\n'
 
193
                         'Updated to revision 2.\n', err)
 
194
 
201
195
        # The pending merges should still be there
202
 
        self.assertEqual(['o2'], checkout1.get_parent_ids()[1:])
203
 
 
204
 
    def test_readonly_lightweight_update(self):
205
 
        """Update a light checkout of a readonly branch"""
206
 
        tree = self.make_branch_and_tree('branch')
207
 
        readonly_branch = branch.Branch.open(self.get_readonly_url('branch'))
208
 
        checkout = readonly_branch.create_checkout('checkout',
209
 
                                                   lightweight=True)
210
 
        tree.commit('empty commit')
211
 
        self.run_bzr('update checkout')
 
196
        self.assertEqual(['o2'], checkout1.pending_merges())