/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_transform.py

  • Committer: Martin Pool
  • Date: 2006-03-20 22:32:41 UTC
  • mto: This revision was merged to the branch mainline in revision 1621.
  • Revision ID: mbp@sourcefrog.net-20060320223241-95ba66352fd77026
Cleanup and document some check code

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
import os
18
18
 
19
19
from bzrlib.bzrdir import BzrDir
20
 
from bzrlib.conflicts import (DuplicateEntry, DuplicateID, MissingParent,
21
 
                              UnversionedParent, ParentLoop)
22
20
from bzrlib.errors import (DuplicateKey, MalformedTransform, NoSuchFile,
23
21
                           ReusingTransform, CantMoveRoot, NotVersionedError,
24
22
                           ExistingLimbo, ImmortalLimbo, LockError)
25
23
from bzrlib.osutils import file_kind, has_symlinks, pathjoin
26
24
from bzrlib.merge import Merge3Merger
27
 
from bzrlib.tests import TestCaseInTempDir, TestSkipped, TestCase
 
25
from bzrlib.tests import TestCaseInTempDir, TestSkipped
28
26
from bzrlib.transform import (TreeTransform, ROOT_PARENT, FinalPaths, 
29
27
                              resolve_conflicts, cook_conflicts, 
30
 
                              find_interesting, build_tree, get_backup_name)
 
28
                              conflicts_strings, find_interesting, build_tree)
31
29
 
32
30
class TestTreeTransform(TestCaseInTempDir):
33
31
    def setUp(self):
190
188
        transform3.adjust_path('tip', root_id, tip_id)
191
189
        transform3.apply()
192
190
 
193
 
    def test_add_del(self):
194
 
        start, root = self.get_transform()
195
 
        start.new_directory('a', root, 'a')
196
 
        start.apply()
197
 
        transform, root = self.get_transform()
198
 
        transform.delete_versioned(transform.trans_id_tree_file_id('a'))
199
 
        transform.new_directory('a', root, 'a')
200
 
        transform.apply()
201
 
 
202
191
    def test_unversioning(self):
203
192
        create_tree, root = self.get_transform()
204
193
        parent_id = create_tree.new_directory('parent', root, 'parent-id')
403
392
        tt, emerald, oz, old_dorothy, new_dorothy = self.get_conflicted()
404
393
        raw_conflicts = resolve_conflicts(tt)
405
394
        cooked_conflicts = cook_conflicts(raw_conflicts, tt)
406
 
        duplicate = DuplicateEntry('Moved existing file to', 'dorothy.moved', 
407
 
                                   'dorothy', None, 'dorothy-id')
 
395
        duplicate = ('duplicate', 'Moved existing file to', 'dorothy.moved', 
 
396
                     None, 'dorothy', 'dorothy-id')
408
397
        self.assertEqual(cooked_conflicts[0], duplicate)
409
 
        duplicate_id = DuplicateID('Unversioned existing file', 
410
 
                                   'dorothy.moved', 'dorothy', None,
411
 
                                   'dorothy-id')
 
398
        duplicate_id = ('duplicate id', 'Unversioned existing file', 
 
399
                        'dorothy.moved', None, 'dorothy', 'dorothy-id')
412
400
        self.assertEqual(cooked_conflicts[1], duplicate_id)
413
 
        missing_parent = MissingParent('Not deleting', 'oz', 'oz-id')
 
401
        missing_parent = ('missing parent', 'Not deleting', 'oz', 'oz-id')
414
402
        self.assertEqual(cooked_conflicts[2], missing_parent)
415
 
        unversioned_parent = UnversionedParent('Versioned directory', 'oz',
416
 
                                               'oz-id')
 
403
        unversioned_parent = ('unversioned parent', 
 
404
                              'Versioned directory', 'oz', 'oz-id')
417
405
        self.assertEqual(cooked_conflicts[3], unversioned_parent)
418
 
        parent_loop = ParentLoop('Cancelled move', 'oz/emeraldcity', 
419
 
                                 'oz/emeraldcity', 'emerald-id', 'emerald-id')
 
406
        parent_loop = ('parent loop', 'Cancelled move', 'oz/emeraldcity', 
 
407
                       'emerald-id', 'oz/emeraldcity', 'emerald-id')
420
408
        self.assertEqual(cooked_conflicts[4], parent_loop)
421
409
        self.assertEqual(len(cooked_conflicts), 5)
422
410
        tt.finalize()
426
414
        raw_conflicts = resolve_conflicts(tt)
427
415
        cooked_conflicts = cook_conflicts(raw_conflicts, tt)
428
416
        tt.finalize()
429
 
        conflicts_s = [str(c) for c in cooked_conflicts]
 
417
        conflicts_s = list(conflicts_strings(cooked_conflicts))
430
418
        self.assertEqual(len(cooked_conflicts), len(conflicts_s))
431
419
        self.assertEqual(conflicts_s[0], 'Conflict adding file dorothy.  '
432
420
                                         'Moved existing file to '
579
567
        merge_modified = this.wt.merge_modified()
580
568
        self.assertSubset(merge_modified, modified)
581
569
        self.assertEqual(len(merge_modified), len(modified))
582
 
        this.wt.remove('b')
583
 
        this.wt.revert([])
584
570
 
585
571
    def test_file_merge(self):
586
572
        if not has_symlinks():
702
688
        self.assertIs(os.path.isdir('b/foo'), True)
703
689
        self.assertEqual(file('b/foo/bar', 'rb').read(), "contents")
704
690
        self.assertEqual(os.readlink('b/foo/baz'), 'a/foo/bar')
705
 
        
706
 
class MockTransform(object):
707
 
 
708
 
    def has_named_child(self, by_parent, parent_id, name):
709
 
        for child_id in by_parent[parent_id]:
710
 
            if child_id == '0':
711
 
                if name == "name~":
712
 
                    return True
713
 
            elif name == "name.~%s~" % child_id:
714
 
                return True
715
 
        return False
716
 
 
717
 
class MockEntry(object):
718
 
    def __init__(self):
719
 
        object.__init__(self)
720
 
        self.name = "name"
721
 
 
722
 
class TestGetBackupName(TestCase):
723
 
    def test_get_backup_name(self):
724
 
        tt = MockTransform()
725
 
        name = get_backup_name(MockEntry(), {'a':[]}, 'a', tt)
726
 
        self.assertEqual(name, 'name.~1~')
727
 
        name = get_backup_name(MockEntry(), {'a':['1']}, 'a', tt)
728
 
        self.assertEqual(name, 'name.~2~')
729
 
        name = get_backup_name(MockEntry(), {'a':['2']}, 'a', tt)
730
 
        self.assertEqual(name, 'name.~1~')
731
 
        name = get_backup_name(MockEntry(), {'a':['2'], 'b':[]}, 'b', tt)
732
 
        self.assertEqual(name, 'name.~1~')
733
 
        name = get_backup_name(MockEntry(), {'a':['1', '2', '3']}, 'a', tt)
734
 
        self.assertEqual(name, 'name.~4~')