18
18
from cStringIO import StringIO
21
from bzrlib import ignores
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 (
42
42
class TestTreeDirectory(TestCaseWithTransport):
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'
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',
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)
312
class TestAutoResolve(TestCaseWithTransport):
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')
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')],
330
self.assertEqual([conflicts.TextConflict('hello', None, 'hello_id')],
332
self.build_tree_contents([('this/hello', '<<<<<<<')])
334
self.assertEqual([conflicts.TextConflict('hello', None, 'hello_id')],
336
self.build_tree_contents([('this/hello', '=======')])
338
self.assertEqual([conflicts.TextConflict('hello', None, 'hello_id')],
340
self.build_tree_contents([('this/hello', '\n>>>>>>>')])
341
remaining, resolved = this.auto_resolve()
342
self.assertEqual([conflicts.TextConflict('hello', None, 'hello_id')],
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')],
350
self.failIfExists('this/hello.BASE')
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]))