~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: wang
  • Date: 2006-10-29 13:41:32 UTC
  • mto: (2104.4.1 wang_65714)
  • mto: This revision was merged to the branch mainline in revision 2109.
  • Revision ID: wang@ubuntu-20061029134132-3d7f4216f20c4aef
Replace python's difflib by patiencediff because the worst case 
performance is cubic for difflib and people commiting large data 
files are often hurt by this. The worst case performance of patience is 
quadratic. Fix bug 65714.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006 by Canonical Ltd
 
1
# Copyright (C) 2006 Canonical Ltd
2
2
# -*- coding: utf-8 -*-
3
3
#
4
4
# This program is free software; you can redistribute it and/or modify
113
113
    def test_smoke_update_checkout_bound_branch_local_commits(self):
114
114
        # smoke test for doing an update of a checkout of a bound
115
115
        # branch with local commits.
116
 
        self.make_branch_and_tree('master')
 
116
        master = self.make_branch_and_tree('master')
117
117
        # make a bound branch
118
118
        self.run_bzr('checkout', 'master', 'child')
 
119
        # get an object form of child
 
120
        child = WorkingTree.open('child')
119
121
        # check that out
120
122
        self.run_bzr('checkout', '--lightweight', 'child', 'checkout')
 
123
        # get an object form of the checkout to manipulate
 
124
        wt = WorkingTree.open('checkout')
121
125
        # change master
122
126
        a_file = file('master/file', 'wt')
123
127
        a_file.write('Foo')
124
128
        a_file.close()
125
 
        self.run_bzr('add', 'master')
126
 
        self.run_bzr('commit', '-m', 'add file', 'master')
 
129
        master.add(['file'])
 
130
        master_tip = master.commit('add file')
127
131
        # change child
128
132
        a_file = file('child/file_b', 'wt')
129
133
        a_file.write('Foo')
130
134
        a_file.close()
131
 
        self.run_bzr('add', 'child')
132
 
        self.run_bzr('commit', '--local', '-m', 'add file_b', 'child')
 
135
        child.add(['file_b'])
 
136
        child_tip = child.commit('add file_b', local=True)
133
137
        # check checkout
134
138
        a_file = file('checkout/file_c', 'wt')
135
139
        a_file.write('Foo')
136
140
        a_file.close()
137
 
        self.run_bzr('add', 'checkout')
 
141
        wt.add(['file_c'])
138
142
 
139
143
        # now, update checkout ->
140
144
        # get all three files and a pending merge.
143
147
        self.assertContainsRe(err, 'Updated to revision 1.\n'
144
148
                                   'Your local commits will now show as'
145
149
                                   ' pending merges')
146
 
        wt = WorkingTree.open('checkout')
147
 
        self.assertNotEqual([], wt.pending_merges())
 
150
        self.assertEqual([master_tip, child_tip], wt.get_parent_ids())
148
151
        self.failUnlessExists('checkout/file')
149
152
        self.failUnlessExists('checkout/file_b')
150
153
        self.failUnlessExists('checkout/file_c')
179
182
        os.chdir('checkout1')
180
183
        self.run_bzr('merge', '../other')
181
184
 
182
 
        self.assertEqual(['o2'], checkout1.pending_merges())
 
185
        self.assertEqual(['o2'], checkout1.get_parent_ids()[1:])
183
186
 
184
187
        # At this point, 'commit' should fail, because we are out of date
185
188
        self.run_bzr_error(["please run 'bzr update'"],
193
196
                         'Updated to revision 2.\n', err)
194
197
 
195
198
        # The pending merges should still be there
196
 
        self.assertEqual(['o2'], checkout1.pending_merges())
 
199
        self.assertEqual(['o2'], checkout1.get_parent_ids()[1:])
 
200
 
 
201
    def test_readonly_lightweight_update(self):
 
202
        """Update a light checkout of a readonly branch"""
 
203
        tree = self.make_branch_and_tree('branch')
 
204
        readonly_branch = branch.Branch.open(self.get_readonly_url('branch'))
 
205
        checkout = readonly_branch.create_checkout('checkout', 
 
206
                                                   lightweight=True)
 
207
        tree.commit('empty commit')
 
208
        self.runbzr(['update', 'checkout'])