/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

Got conflict handling working when conflicts involve existing files

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
from bzrlib.tests import TestCaseInTempDir
2
2
from bzrlib.branch import Branch
3
 
from bzrlib.transform import TreeTransform, ROOT_PARENT
4
 
from bzrlib.errors import DuplicateKey, MalformedTransform, NoSuchFile
 
3
from bzrlib.transform import TreeTransform, ROOT_PARENT, FinalPaths
 
4
from bzrlib.errors import (DuplicateKey, MalformedTransform, NoSuchFile,
 
5
                           ReusingTransform)
5
6
from bzrlib.osutils import file_kind
6
7
import os
7
8
 
66
67
                                      'toto-id', False)
67
68
            wizard = transform.new_symlink('wizard', oz, 'wizard-target', 
68
69
                                           'wizard-id')
 
70
            self.assertEqual(len(transform.find_conflicts()), 0)
69
71
            transform.apply()
70
 
            self.assertEqual(len(transform.find_conflicts()), 0)
 
72
            self.assertRaises(ReusingTransform, transform.find_conflicts)
71
73
            self.assertEqual('contents', file('name').read())
72
74
            self.assertEqual(wt.path2id('name'), 'my_pretties')
73
75
            self.assertIs(wt.is_executable('my_pretties'), True)
92
94
            self.assertEqual(len(transform.find_conflicts()), 0)
93
95
            trans_id2 = transform.new_file('name', root, 'Crontents', 'toto')
94
96
            self.assertEqual(transform.find_conflicts(), 
95
 
                             [('duplicate', trans_id, trans_id2)])
 
97
                             [('duplicate', trans_id, trans_id2, 'name')])
96
98
            self.assertRaises(MalformedTransform, transform.apply)
97
99
            transform.adjust_path('name', trans_id, trans_id2)
98
100
            self.assertEqual(transform.find_conflicts(), 
137
139
                             [('non-file executability', tip_id)])
138
140
            transform.set_executability(None, tip_id)
139
141
            transform.apply()
 
142
        finally:
 
143
            transform.finalize()
140
144
            self.assertEqual('contents', file('name').read())
141
145
            self.assertEqual(wt.path2id('name'), 'my_pretties')
 
146
            transform2 = TreeTransform(wt)
 
147
        try:
 
148
            oz_id = transform2.get_id_tree('oz-id')
 
149
            newtip = transform2.new_file('tip', oz_id, 'other', 'tip-id')
 
150
            result = transform2.find_conflicts()
 
151
            fp = FinalPaths(transform2._new_root, transform2._new_name, 
 
152
                            transform2)
 
153
            self.assert_('oz/tip' in transform2._tree_path_ids)
 
154
            self.assertEqual(fp.get_path(newtip), 'oz/tip')
 
155
            self.assertEqual(len(result), 1)
 
156
            self.assertEqual((result[0][0], result[0][1]), 
 
157
                             ('duplicate', newtip))
142
158
        finally:
143
 
            transform.finalize()
 
159
            transform2.finalize()