/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_workingtree.py

  • Committer: Andrew Bennetts
  • Date: 2007-03-28 07:08:42 UTC
  • mfrom: (2380 +trunk)
  • mto: (2018.5.146 hpss)
  • mto: This revision was merged to the branch mainline in revision 2414.
  • Revision ID: andrew.bennetts@canonical.com-20070328070842-r843houy668oxb9o
Merge from bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
from cStringIO import StringIO
19
19
import os
20
20
 
21
 
from bzrlib import ignores
22
 
import bzrlib
 
21
from bzrlib import (
 
22
    bzrdir,
 
23
    conflicts,
 
24
    errors,
 
25
    workingtree,
 
26
    )
23
27
from bzrlib.branch import Branch
24
 
from bzrlib import bzrdir, conflicts, errors, workingtree
25
28
from bzrlib.bzrdir import BzrDir
26
 
from bzrlib.errors import NotBranchError, NotVersionedError
27
29
from bzrlib.lockdir import LockDir
28
30
from bzrlib.mutabletree import needs_tree_write_lock
29
 
from bzrlib.osutils import pathjoin, getcwd, has_symlinks
30
31
from bzrlib.symbol_versioning import zero_thirteen
31
32
from bzrlib.tests import TestCase, TestCaseWithTransport, TestSkipped
32
 
from bzrlib.trace import mutter
33
33
from bzrlib.transport import get_transport
34
34
from bzrlib.workingtree import (
35
35
    TreeEntry,
36
36
    TreeDirectory,
37
37
    TreeFile,
38
38
    TreeLink,
39
 
    WorkingTree,
40
39
    )
41
40
 
 
41
 
42
42
class TestTreeDirectory(TestCaseWithTransport):
43
43
 
44
44
    def test_kind_character(self):
174
174
        t = control.get_workingtree_transport(None)
175
175
        self.assertEqualDiff('Bazaar-NG Working Tree format 3',
176
176
                             t.get('format').read())
177
 
        # self.assertContainsRe(t.get('inventory').read(), 
178
 
        #                       '<inventory file_id="[^"]*" format="5">\n'
179
 
        #                       '</inventory>\n',
180
 
        #                      )
181
 
        # WorkingTreeFormat3 doesn't default to creating a unique root id,
182
 
        # because it is incompatible with older bzr versions
183
 
        self.assertContainsRe(t.get('inventory').read(),
 
177
        self.assertEqualDiff(t.get('inventory').read(), 
184
178
                              '<inventory format="5">\n'
185
179
                              '</inventory>\n',
186
180
                             )
231
225
 
232
226
    def create_format2_tree(self, url):
233
227
        return self.make_branch_and_tree(
234
 
            url, format=bzrlib.bzrdir.BzrDirFormat6())
 
228
            url, format=bzrdir.BzrDirFormat6())
235
229
 
236
230
    def test_conflicts(self):
237
231
        # test backwards compatability
313
307
        self.assertEqual(['t', 'u'], tree._locks)
314
308
        self.assertRaises(TypeError, tree.method_that_raises, 'foo')
315
309
        self.assertEqual(['t', 'u', 't', 'u'], tree._locks)
 
310
 
 
311
 
 
312
class TestAutoResolve(TestCaseWithTransport):
 
313
 
 
314
    def test_auto_resolve(self):
 
315
        base = self.make_branch_and_tree('base')
 
316
        self.build_tree_contents([('base/hello', 'Hello')])
 
317
        base.add('hello', 'hello_id')
 
318
        base.commit('Hello')
 
319
        other = base.bzrdir.sprout('other').open_workingtree()
 
320
        self.build_tree_contents([('other/hello', 'hELLO')])
 
321
        other.commit('Case switch')
 
322
        this = base.bzrdir.sprout('this').open_workingtree()
 
323
        self.failUnlessExists('this/hello')
 
324
        self.build_tree_contents([('this/hello', 'Hello World')])
 
325
        this.commit('Add World')
 
326
        this.merge_from_branch(other.branch)
 
327
        self.assertEqual([conflicts.TextConflict('hello', None, 'hello_id')],
 
328
                         this.conflicts())
 
329
        this.auto_resolve()
 
330
        self.assertEqual([conflicts.TextConflict('hello', None, 'hello_id')],
 
331
                         this.conflicts())
 
332
        self.build_tree_contents([('this/hello', '<<<<<<<')])
 
333
        this.auto_resolve()
 
334
        self.assertEqual([conflicts.TextConflict('hello', None, 'hello_id')],
 
335
                         this.conflicts())
 
336
        self.build_tree_contents([('this/hello', '=======')])
 
337
        this.auto_resolve()
 
338
        self.assertEqual([conflicts.TextConflict('hello', None, 'hello_id')],
 
339
                         this.conflicts())
 
340
        self.build_tree_contents([('this/hello', '\n>>>>>>>')])
 
341
        remaining, resolved = this.auto_resolve()
 
342
        self.assertEqual([conflicts.TextConflict('hello', None, 'hello_id')],
 
343
                         this.conflicts())
 
344
        self.assertEqual([], resolved)
 
345
        self.build_tree_contents([('this/hello', 'hELLO wORLD')])
 
346
        remaining, resolved = this.auto_resolve()
 
347
        self.assertEqual([], this.conflicts())
 
348
        self.assertEqual([conflicts.TextConflict('hello', None, 'hello_id')],
 
349
                         resolved)
 
350
        self.failIfExists('this/hello.BASE')
 
351
 
 
352
    def test_auto_resolve_dir(self):
 
353
        tree = self.make_branch_and_tree('tree')
 
354
        self.build_tree(['tree/hello/'])
 
355
        tree.add('hello', 'hello-id')
 
356
        file_conflict = conflicts.TextConflict('file', None, 'hello-id')
 
357
        tree.set_conflicts(conflicts.ConflictList([file_conflict]))
 
358
        tree.auto_resolve()