bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
1 |
# Copyright (C) 2006-2012, 2016 Canonical Ltd
|
2 |
#
|
|
3 |
# This program is free software; you can redistribute it and/or modify
|
|
4 |
# it under the terms of the GNU General Public License as published by
|
|
5 |
# the Free Software Foundation; either version 2 of the License, or
|
|
6 |
# (at your option) any later version.
|
|
7 |
#
|
|
8 |
# This program is distributed in the hope that it will be useful,
|
|
9 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11 |
# GNU General Public License for more details.
|
|
12 |
#
|
|
13 |
# You should have received a copy of the GNU General Public License
|
|
14 |
# along with this program; if not, write to the Free Software
|
|
15 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
16 |
||
17 |
from io import BytesIO |
|
18 |
import os |
|
19 |
||
20 |
from ... import ( |
|
21 |
revision as _mod_revision, |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
22 |
tests, |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
23 |
trace, |
24 |
)
|
|
25 |
from ...diff import show_diff_trees |
|
26 |
from ...merge import Merger, Merge3Merger |
|
27 |
from ...transform import ( |
|
28 |
ROOT_PARENT, |
|
29 |
resolve_conflicts, |
|
30 |
)
|
|
31 |
from ...tree import ( |
|
32 |
find_previous_path, |
|
7490.133.26
by Jelmer Vernooij
Some fixes. |
33 |
TreeChange, |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
34 |
)
|
35 |
||
7490.133.20
by Jelmer Vernooij
Some more test fixes. |
36 |
from breezy.bzr.inventorytree import InventoryTreeChange |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
37 |
|
38 |
from breezy.tests.per_tree import TestCaseWithTree |
|
39 |
||
40 |
||
41 |
from ..features import ( |
|
42 |
HardlinkFeature, |
|
43 |
SymlinkFeature, |
|
44 |
UnicodeFilenameFeature, |
|
45 |
)
|
|
46 |
||
47 |
||
48 |
||
49 |
class TestTransformPreview(TestCaseWithTree): |
|
50 |
||
51 |
def create_tree(self): |
|
52 |
tree = self.make_branch_and_tree('.') |
|
53 |
self.build_tree_contents([('a', b'content 1')]) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
54 |
tree.add('a') |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
55 |
revid1 = tree.commit('rev1') |
56 |
return tree.branch.repository.revision_tree(revid1) |
|
57 |
||
58 |
def get_empty_preview(self): |
|
59 |
repository = self.make_repository('repo') |
|
60 |
tree = repository.revision_tree(_mod_revision.NULL_REVISION) |
|
61 |
preview = tree.preview_transform() |
|
62 |
self.addCleanup(preview.finalize) |
|
63 |
return preview |
|
64 |
||
65 |
def test_transform_preview(self): |
|
66 |
revision_tree = self.create_tree() |
|
67 |
preview = revision_tree.preview_transform() |
|
68 |
self.addCleanup(preview.finalize) |
|
69 |
||
70 |
def test_transform_preview_tree(self): |
|
71 |
revision_tree = self.create_tree() |
|
72 |
preview = revision_tree.preview_transform() |
|
73 |
self.addCleanup(preview.finalize) |
|
74 |
preview.get_preview_tree() |
|
75 |
||
76 |
def test_transform_new_file(self): |
|
77 |
revision_tree = self.create_tree() |
|
78 |
preview = revision_tree.preview_transform() |
|
79 |
self.addCleanup(preview.finalize) |
|
80 |
preview.new_file('file2', preview.root, [b'content B\n'], b'file2-id') |
|
81 |
preview_tree = preview.get_preview_tree() |
|
82 |
self.assertEqual(preview_tree.kind('file2'), 'file') |
|
83 |
with preview_tree.get_file('file2') as f: |
|
84 |
self.assertEqual(f.read(), b'content B\n') |
|
85 |
||
86 |
def test_diff_preview_tree(self): |
|
87 |
revision_tree = self.create_tree() |
|
88 |
preview = revision_tree.preview_transform() |
|
89 |
self.addCleanup(preview.finalize) |
|
90 |
preview.new_file('file2', preview.root, [b'content B\n'], b'file2-id') |
|
91 |
preview_tree = preview.get_preview_tree() |
|
92 |
out = BytesIO() |
|
93 |
show_diff_trees(revision_tree, preview_tree, out) |
|
94 |
lines = out.getvalue().splitlines() |
|
95 |
self.assertEqual(lines[0], b"=== added file 'file2'") |
|
96 |
# 3 lines of diff administrivia
|
|
97 |
self.assertEqual(lines[4], b"+content B") |
|
98 |
||
99 |
def test_unsupported_symlink_diff(self): |
|
100 |
self.requireFeature(SymlinkFeature) |
|
101 |
tree = self.make_branch_and_tree('.') |
|
102 |
self.build_tree_contents([('a', 'content 1')]) |
|
103 |
tree.add('a') |
|
104 |
os.symlink('a', 'foo') |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
105 |
tree.add('foo') |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
106 |
revid1 = tree.commit('rev1') |
107 |
revision_tree = tree.branch.repository.revision_tree(revid1) |
|
108 |
preview = revision_tree.preview_transform() |
|
109 |
self.addCleanup(preview.finalize) |
|
110 |
preview.delete_versioned(preview.trans_id_tree_path('foo')) |
|
111 |
preview_tree = preview.get_preview_tree() |
|
112 |
out = BytesIO() |
|
113 |
log = BytesIO() |
|
114 |
trace.push_log_file(log) |
|
115 |
os_symlink = getattr(os, 'symlink', None) |
|
116 |
os.symlink = None |
|
117 |
try: |
|
118 |
show_diff_trees(revision_tree, preview_tree, out) |
|
119 |
lines = out.getvalue().splitlines() |
|
120 |
finally: |
|
121 |
os.symlink = os_symlink |
|
122 |
self.assertContainsRe( |
|
123 |
log.getvalue(), |
|
124 |
b'Ignoring "foo" as symlinks are not supported on this filesystem') |
|
125 |
||
126 |
def test_transform_conflicts(self): |
|
127 |
revision_tree = self.create_tree() |
|
128 |
preview = revision_tree.preview_transform() |
|
129 |
self.addCleanup(preview.finalize) |
|
130 |
preview.new_file('a', preview.root, [b'content 2']) |
|
131 |
resolve_conflicts(preview) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
132 |
trans_id = preview.trans_id_tree_path('a') |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
133 |
self.assertEqual('a.moved', preview.final_name(trans_id)) |
134 |
||
135 |
def get_tree_and_preview_tree(self): |
|
136 |
revision_tree = self.create_tree() |
|
137 |
preview = revision_tree.preview_transform() |
|
138 |
self.addCleanup(preview.finalize) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
139 |
a_trans_id = preview.trans_id_tree_path('a') |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
140 |
preview.delete_contents(a_trans_id) |
141 |
preview.create_file([b'b content'], a_trans_id) |
|
142 |
preview_tree = preview.get_preview_tree() |
|
143 |
return revision_tree, preview_tree |
|
144 |
||
145 |
def test_iter_changes(self): |
|
146 |
revision_tree, preview_tree = self.get_tree_and_preview_tree() |
|
147 |
root = revision_tree.path2id('') |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
148 |
self.assertEqual([(revision_tree.path2id('a'), ('a', 'a'), True, (True, True), |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
149 |
(root, root), ('a', 'a'), ('file', 'file'), |
150 |
(False, False), False)], |
|
151 |
list(preview_tree.iter_changes(revision_tree))) |
|
152 |
||
7490.133.20
by Jelmer Vernooij
Some more test fixes. |
153 |
def assertTreeChanges(self, expected, actual, tree): |
154 |
# TODO(jelmer): Turn this into a matcher?
|
|
155 |
actual = list(actual) |
|
156 |
if tree.supports_setting_file_ids(): |
|
157 |
self.assertEqual(expected, actual) |
|
158 |
else: |
|
7490.133.26
by Jelmer Vernooij
Some fixes. |
159 |
expected = [ |
160 |
TreeChange(path=c.path, changed_content=c.changed_content, |
|
161 |
versioned=c.versioned, name=c.name, |
|
162 |
kind=c.kind, executable=c.executable, |
|
163 |
copied=c.copied) for c in expected] |
|
164 |
actual = [ |
|
165 |
TreeChange(path=c.path, changed_content=c.changed_content, |
|
166 |
versioned=c.versioned, name=c.name, |
|
167 |
kind=c.kind, executable=c.executable, |
|
168 |
copied=c.copied) for c in actual] |
|
7490.133.20
by Jelmer Vernooij
Some more test fixes. |
169 |
self.assertEqual(expected, actual) |
170 |
||
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
171 |
def test_include_unchanged_succeeds(self): |
172 |
revision_tree, preview_tree = self.get_tree_and_preview_tree() |
|
173 |
changes = preview_tree.iter_changes(revision_tree, |
|
174 |
include_unchanged=True) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
175 |
|
176 |
root_id = revision_tree.path2id('') |
|
7490.133.25
by Jelmer Vernooij
More fixes. |
177 |
root_entry = InventoryTreeChange( |
178 |
root_id, ('', ''), False, (True, True), (None, None), |
|
179 |
('', ''), ('directory', 'directory'), (False, False), False) |
|
180 |
a_entry = InventoryTreeChange( |
|
181 |
revision_tree.path2id('a'), ('a', 'a'), True, (True, True), |
|
182 |
(root_id, root_id), ('a', 'a'), ('file', 'file'), |
|
183 |
(False, False), False) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
184 |
|
7490.133.20
by Jelmer Vernooij
Some more test fixes. |
185 |
self.assertTreeChanges([root_entry, a_entry], changes, preview_tree) |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
186 |
|
187 |
def test_specific_files(self): |
|
188 |
revision_tree, preview_tree = self.get_tree_and_preview_tree() |
|
189 |
changes = preview_tree.iter_changes(revision_tree, |
|
190 |
specific_files=['']) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
191 |
root_id = revision_tree.path2id('') |
192 |
a_entry = (revision_tree.path2id('a'), ('a', 'a'), True, (True, True), |
|
193 |
(root_id, root_id), ('a', 'a'), ('file', 'file'), |
|
194 |
(False, False), False) |
|
195 |
||
196 |
self.assertEqual([a_entry], list(changes)) |
|
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
197 |
|
198 |
def test_want_unversioned(self): |
|
199 |
revision_tree, preview_tree = self.get_tree_and_preview_tree() |
|
200 |
changes = preview_tree.iter_changes(revision_tree, |
|
201 |
want_unversioned=True) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
202 |
root_id = revision_tree.path2id('') |
7490.133.20
by Jelmer Vernooij
Some more test fixes. |
203 |
a_entry = InventoryTreeChange( |
204 |
revision_tree.path2id('a'), ('a', 'a'), True, (True, True), |
|
205 |
(root_id, root_id), ('a', 'a'), ('file', 'file'), |
|
206 |
(False, False), False) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
207 |
|
208 |
self.assertEqual([a_entry], list(changes)) |
|
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
209 |
|
210 |
def test_ignore_extra_trees_no_specific_files(self): |
|
211 |
# extra_trees is harmless without specific_files, so we'll silently
|
|
212 |
# accept it, even though we won't use it.
|
|
213 |
revision_tree, preview_tree = self.get_tree_and_preview_tree() |
|
214 |
preview_tree.iter_changes(revision_tree, extra_trees=[preview_tree]) |
|
215 |
||
216 |
def test_ignore_require_versioned_no_specific_files(self): |
|
217 |
# require_versioned is meaningless without specific_files.
|
|
218 |
revision_tree, preview_tree = self.get_tree_and_preview_tree() |
|
219 |
preview_tree.iter_changes(revision_tree, require_versioned=False) |
|
220 |
||
221 |
def test_ignore_pb(self): |
|
222 |
# pb could be supported, but TT.iter_changes doesn't support it.
|
|
223 |
revision_tree, preview_tree = self.get_tree_and_preview_tree() |
|
224 |
preview_tree.iter_changes(revision_tree) |
|
225 |
||
226 |
def test_kind(self): |
|
227 |
revision_tree = self.create_tree() |
|
228 |
preview = revision_tree.preview_transform() |
|
229 |
self.addCleanup(preview.finalize) |
|
230 |
preview.new_file('file', preview.root, [b'contents'], b'file-id') |
|
231 |
preview.new_directory('directory', preview.root, b'dir-id') |
|
232 |
preview_tree = preview.get_preview_tree() |
|
233 |
self.assertEqual('file', preview_tree.kind('file')) |
|
234 |
self.assertEqual('directory', preview_tree.kind('directory')) |
|
235 |
||
236 |
def test_get_file_mtime(self): |
|
237 |
preview = self.get_empty_preview() |
|
238 |
file_trans_id = preview.new_file('file', preview.root, [b'contents'], |
|
239 |
b'file-id') |
|
240 |
limbo_path = preview._limbo_name(file_trans_id) |
|
241 |
preview_tree = preview.get_preview_tree() |
|
242 |
self.assertEqual(os.stat(limbo_path).st_mtime, |
|
243 |
preview_tree.get_file_mtime('file')) |
|
244 |
||
245 |
def test_get_file_mtime_renamed(self): |
|
246 |
work_tree = self.make_branch_and_tree('tree') |
|
247 |
self.build_tree(['tree/file']) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
248 |
work_tree.add('file') |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
249 |
preview = work_tree.preview_transform() |
250 |
self.addCleanup(preview.finalize) |
|
251 |
file_trans_id = preview.trans_id_tree_path('file') |
|
252 |
preview.adjust_path('renamed', preview.root, file_trans_id) |
|
253 |
preview_tree = preview.get_preview_tree() |
|
254 |
preview_mtime = preview_tree.get_file_mtime('renamed') |
|
255 |
work_mtime = work_tree.get_file_mtime('file') |
|
256 |
||
257 |
def test_get_file_size(self): |
|
258 |
work_tree = self.make_branch_and_tree('tree') |
|
259 |
self.build_tree_contents([('tree/old', b'old')]) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
260 |
work_tree.add('old') |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
261 |
preview = work_tree.preview_transform() |
262 |
self.addCleanup(preview.finalize) |
|
263 |
preview.new_file('name', preview.root, [b'contents'], b'new-id', |
|
264 |
'executable') |
|
265 |
tree = preview.get_preview_tree() |
|
266 |
self.assertEqual(len('old'), tree.get_file_size('old')) |
|
267 |
self.assertEqual(len('contents'), tree.get_file_size('name')) |
|
268 |
||
269 |
def test_get_file(self): |
|
270 |
preview = self.get_empty_preview() |
|
271 |
preview.new_file('file', preview.root, [b'contents'], b'file-id') |
|
272 |
preview_tree = preview.get_preview_tree() |
|
273 |
with preview_tree.get_file('file') as tree_file: |
|
274 |
self.assertEqual(b'contents', tree_file.read()) |
|
275 |
||
276 |
def test_get_symlink_target(self): |
|
277 |
self.requireFeature(SymlinkFeature) |
|
278 |
preview = self.get_empty_preview() |
|
279 |
preview.new_symlink('symlink', preview.root, 'target', b'symlink-id') |
|
280 |
preview_tree = preview.get_preview_tree() |
|
281 |
self.assertEqual('target', |
|
282 |
preview_tree.get_symlink_target('symlink')) |
|
283 |
||
284 |
def test_all_file_ids(self): |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
285 |
if not self.workingtree_format.supports_setting_file_ids: |
286 |
raise tests.TestNotApplicable( |
|
287 |
'format does not support setting file ids') |
|
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
288 |
tree = self.make_branch_and_tree('tree') |
289 |
self.build_tree(['tree/a', 'tree/b', 'tree/c']) |
|
290 |
tree.add(['a', 'b', 'c'], [b'a-id', b'b-id', b'c-id']) |
|
291 |
preview = tree.preview_transform() |
|
292 |
self.addCleanup(preview.finalize) |
|
293 |
preview.unversion_file(preview.trans_id_file_id(b'b-id')) |
|
294 |
c_trans_id = preview.trans_id_file_id(b'c-id') |
|
295 |
preview.unversion_file(c_trans_id) |
|
296 |
preview.version_file(c_trans_id, file_id=b'c-id') |
|
297 |
preview_tree = preview.get_preview_tree() |
|
298 |
self.assertEqual({b'a-id', b'c-id', tree.path2id('')}, |
|
299 |
preview_tree.all_file_ids()) |
|
300 |
||
301 |
def test_path2id_deleted_unchanged(self): |
|
302 |
tree = self.make_branch_and_tree('tree') |
|
303 |
self.build_tree(['tree/unchanged', 'tree/deleted']) |
|
304 |
tree.add(['unchanged', 'deleted']) |
|
305 |
preview = tree.preview_transform() |
|
306 |
self.addCleanup(preview.finalize) |
|
307 |
preview.unversion_file(preview.trans_id_tree_path('deleted')) |
|
308 |
preview_tree = preview.get_preview_tree() |
|
309 |
self.assertEqual( |
|
310 |
'unchanged', |
|
311 |
find_previous_path(preview_tree, tree, 'unchanged')) |
|
312 |
self.assertFalse(preview_tree.is_versioned('deleted')) |
|
313 |
||
314 |
def test_path2id_created(self): |
|
315 |
tree = self.make_branch_and_tree('tree') |
|
316 |
self.build_tree(['tree/unchanged']) |
|
317 |
tree.add(['unchanged']) |
|
318 |
preview = tree.preview_transform() |
|
319 |
self.addCleanup(preview.finalize) |
|
320 |
preview.new_file('new', preview.trans_id_tree_path('unchanged'), |
|
321 |
[b'contents'], b'new-id') |
|
322 |
preview_tree = preview.get_preview_tree() |
|
7490.133.5
by Jelmer Vernooij
Make assign_id public, fix some more GitTransform tests. |
323 |
self.assertTrue(preview_tree.is_versioned('unchanged/new')) |
324 |
if self.workingtree_format.supports_setting_file_ids: |
|
325 |
self.assertEqual(b'new-id', preview_tree.path2id('unchanged/new')) |
|
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
326 |
|
327 |
def test_path2id_moved(self): |
|
328 |
tree = self.make_branch_and_tree('tree') |
|
329 |
self.build_tree(['tree/old_parent/', 'tree/old_parent/child']) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
330 |
tree.add(['old_parent', 'old_parent/child']) |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
331 |
preview = tree.preview_transform() |
332 |
self.addCleanup(preview.finalize) |
|
333 |
new_parent = preview.new_directory('new_parent', preview.root, |
|
334 |
b'new_parent-id') |
|
335 |
preview.adjust_path('child', new_parent, |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
336 |
preview.trans_id_tree_path('old_parent/child')) |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
337 |
preview_tree = preview.get_preview_tree() |
338 |
self.assertFalse(preview_tree.is_versioned('old_parent/child')) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
339 |
self.assertEqual( |
340 |
'new_parent/child', |
|
341 |
find_previous_path(tree, preview_tree, 'old_parent/child')) |
|
342 |
if self.workingtree_format.supports_setting_file_ids: |
|
343 |
self.assertEqual( |
|
344 |
tree.path2id('old_parent/child'), |
|
345 |
preview_tree.path2id('new_parent/child')) |
|
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
346 |
|
347 |
def test_path2id_renamed_parent(self): |
|
348 |
tree = self.make_branch_and_tree('tree') |
|
349 |
self.build_tree(['tree/old_name/', 'tree/old_name/child']) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
350 |
tree.add(['old_name', 'old_name/child']) |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
351 |
preview = tree.preview_transform() |
352 |
self.addCleanup(preview.finalize) |
|
353 |
preview.adjust_path('new_name', preview.root, |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
354 |
preview.trans_id_tree_path('old_name')) |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
355 |
preview_tree = preview.get_preview_tree() |
356 |
self.assertFalse(preview_tree.is_versioned('old_name/child')) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
357 |
self.assertEqual( |
358 |
'new_name/child', |
|
359 |
find_previous_path(tree, preview_tree, 'old_name/child')) |
|
7490.133.19
by Jelmer Vernooij
Fix some more tests. |
360 |
if tree.supports_setting_file_ids(): |
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
361 |
self.assertEqual( |
362 |
tree.path2id('old_name/child'), |
|
363 |
preview_tree.path2id('new_name/child')) |
|
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
364 |
|
365 |
def assertMatchingIterEntries(self, tt, specific_files=None): |
|
366 |
preview_tree = tt.get_preview_tree() |
|
367 |
preview_result = list(preview_tree.iter_entries_by_dir( |
|
368 |
specific_files=specific_files)) |
|
369 |
tree = tt._tree |
|
370 |
tt.apply() |
|
371 |
actual_result = list(tree.iter_entries_by_dir( |
|
372 |
specific_files=specific_files)) |
|
373 |
self.assertEqual(actual_result, preview_result) |
|
374 |
||
375 |
def test_iter_entries_by_dir_new(self): |
|
376 |
tree = self.make_branch_and_tree('tree') |
|
377 |
tt = tree.transform() |
|
378 |
tt.new_file('new', tt.root, [b'contents'], b'new-id') |
|
379 |
self.assertMatchingIterEntries(tt) |
|
380 |
||
381 |
def test_iter_entries_by_dir_deleted(self): |
|
382 |
tree = self.make_branch_and_tree('tree') |
|
383 |
self.build_tree(['tree/deleted']) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
384 |
tree.add('deleted') |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
385 |
tt = tree.transform() |
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
386 |
tt.delete_contents(tt.trans_id_tree_path('deleted')) |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
387 |
self.assertMatchingIterEntries(tt) |
388 |
||
389 |
def test_iter_entries_by_dir_unversioned(self): |
|
390 |
tree = self.make_branch_and_tree('tree') |
|
391 |
self.build_tree(['tree/removed']) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
392 |
tree.add('removed') |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
393 |
tt = tree.transform() |
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
394 |
tt.unversion_file(tt.trans_id_tree_path('removed')) |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
395 |
self.assertMatchingIterEntries(tt) |
396 |
||
397 |
def test_iter_entries_by_dir_moved(self): |
|
398 |
tree = self.make_branch_and_tree('tree') |
|
399 |
self.build_tree(['tree/moved', 'tree/new_parent/']) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
400 |
tree.add(['moved', 'new_parent']) |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
401 |
tt = tree.transform() |
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
402 |
tt.adjust_path( |
403 |
'moved', tt.trans_id_tree_path('new_parent'), |
|
404 |
tt.trans_id_tree_path('moved')) |
|
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
405 |
self.assertMatchingIterEntries(tt) |
406 |
||
407 |
def test_iter_entries_by_dir_specific_files(self): |
|
408 |
tree = self.make_branch_and_tree('tree') |
|
409 |
self.build_tree(['tree/parent/', 'tree/parent/child']) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
410 |
tree.add(['parent', 'parent/child']) |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
411 |
tt = tree.transform() |
412 |
self.assertMatchingIterEntries(tt, ['', 'parent/child']) |
|
413 |
||
414 |
def test_symlink_content_summary(self): |
|
415 |
self.requireFeature(SymlinkFeature) |
|
416 |
preview = self.get_empty_preview() |
|
417 |
preview.new_symlink('path', preview.root, 'target', b'path-id') |
|
418 |
summary = preview.get_preview_tree().path_content_summary('path') |
|
419 |
self.assertEqual(('symlink', None, None, 'target'), summary) |
|
420 |
||
421 |
def test_missing_content_summary(self): |
|
422 |
preview = self.get_empty_preview() |
|
423 |
summary = preview.get_preview_tree().path_content_summary('path') |
|
424 |
self.assertEqual(('missing', None, None, None), summary) |
|
425 |
||
426 |
def test_deleted_content_summary(self): |
|
427 |
tree = self.make_branch_and_tree('tree') |
|
428 |
self.build_tree(['tree/path/']) |
|
429 |
tree.add('path') |
|
430 |
preview = tree.preview_transform() |
|
431 |
self.addCleanup(preview.finalize) |
|
432 |
preview.delete_contents(preview.trans_id_tree_path('path')) |
|
433 |
summary = preview.get_preview_tree().path_content_summary('path') |
|
434 |
self.assertEqual(('missing', None, None, None), summary) |
|
435 |
||
436 |
def test_file_content_summary_executable(self): |
|
437 |
preview = self.get_empty_preview() |
|
438 |
path_id = preview.new_file('path', preview.root, [ |
|
439 |
b'contents'], b'path-id') |
|
440 |
preview.set_executability(True, path_id) |
|
441 |
summary = preview.get_preview_tree().path_content_summary('path') |
|
442 |
self.assertEqual(4, len(summary)) |
|
443 |
self.assertEqual('file', summary[0]) |
|
444 |
# size must be known
|
|
445 |
self.assertEqual(len('contents'), summary[1]) |
|
446 |
# executable
|
|
447 |
self.assertEqual(True, summary[2]) |
|
448 |
# will not have hash (not cheap to determine)
|
|
449 |
self.assertIs(None, summary[3]) |
|
450 |
||
451 |
def test_change_executability(self): |
|
452 |
tree = self.make_branch_and_tree('tree') |
|
453 |
self.build_tree(['tree/path']) |
|
454 |
tree.add('path') |
|
455 |
preview = tree.preview_transform() |
|
456 |
self.addCleanup(preview.finalize) |
|
457 |
path_id = preview.trans_id_tree_path('path') |
|
458 |
preview.set_executability(True, path_id) |
|
459 |
summary = preview.get_preview_tree().path_content_summary('path') |
|
460 |
self.assertEqual(True, summary[2]) |
|
461 |
||
462 |
def test_file_content_summary_non_exec(self): |
|
463 |
preview = self.get_empty_preview() |
|
464 |
preview.new_file('path', preview.root, [b'contents'], b'path-id') |
|
465 |
summary = preview.get_preview_tree().path_content_summary('path') |
|
466 |
self.assertEqual(4, len(summary)) |
|
467 |
self.assertEqual('file', summary[0]) |
|
468 |
# size must be known
|
|
469 |
self.assertEqual(len('contents'), summary[1]) |
|
470 |
# not executable
|
|
471 |
self.assertEqual(False, summary[2]) |
|
472 |
# will not have hash (not cheap to determine)
|
|
473 |
self.assertIs(None, summary[3]) |
|
474 |
||
475 |
def test_dir_content_summary(self): |
|
476 |
preview = self.get_empty_preview() |
|
477 |
preview.new_directory('path', preview.root, b'path-id') |
|
478 |
summary = preview.get_preview_tree().path_content_summary('path') |
|
479 |
self.assertEqual(('directory', None, None, None), summary) |
|
480 |
||
481 |
def test_tree_content_summary(self): |
|
482 |
preview = self.get_empty_preview() |
|
483 |
path = preview.new_directory('path', preview.root, b'path-id') |
|
484 |
preview.set_tree_reference(b'rev-1', path) |
|
485 |
summary = preview.get_preview_tree().path_content_summary('path') |
|
486 |
self.assertEqual(4, len(summary)) |
|
487 |
self.assertEqual('tree-reference', summary[0]) |
|
488 |
||
489 |
def test_annotate(self): |
|
490 |
tree = self.make_branch_and_tree('tree') |
|
491 |
self.build_tree_contents([('tree/file', b'a\n')]) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
492 |
tree.add('file') |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
493 |
revid1 = tree.commit('a') |
494 |
self.build_tree_contents([('tree/file', b'a\nb\n')]) |
|
495 |
preview = tree.preview_transform() |
|
496 |
self.addCleanup(preview.finalize) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
497 |
file_trans_id = preview.trans_id_tree_path('file') |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
498 |
preview.delete_contents(file_trans_id) |
499 |
preview.create_file([b'a\nb\nc\n'], file_trans_id) |
|
500 |
preview_tree = preview.get_preview_tree() |
|
501 |
expected = [ |
|
502 |
(revid1, b'a\n'), |
|
503 |
(b'me:', b'b\n'), |
|
504 |
(b'me:', b'c\n'), |
|
505 |
]
|
|
506 |
annotation = preview_tree.annotate_iter( |
|
507 |
'file', default_revision=b'me:') |
|
508 |
self.assertEqual(expected, annotation) |
|
509 |
||
510 |
def test_annotate_missing(self): |
|
511 |
preview = self.get_empty_preview() |
|
512 |
preview.new_file('file', preview.root, [b'a\nb\nc\n'], b'file-id') |
|
513 |
preview_tree = preview.get_preview_tree() |
|
514 |
expected = [ |
|
515 |
(b'me:', b'a\n'), |
|
516 |
(b'me:', b'b\n'), |
|
517 |
(b'me:', b'c\n'), |
|
518 |
]
|
|
519 |
annotation = preview_tree.annotate_iter( |
|
520 |
'file', default_revision=b'me:') |
|
521 |
self.assertEqual(expected, annotation) |
|
522 |
||
523 |
def test_annotate_rename(self): |
|
524 |
tree = self.make_branch_and_tree('tree') |
|
525 |
self.build_tree_contents([('tree/file', b'a\n')]) |
|
526 |
tree.add('file') |
|
527 |
revid1 = tree.commit('a') |
|
528 |
preview = tree.preview_transform() |
|
529 |
self.addCleanup(preview.finalize) |
|
530 |
file_trans_id = preview.trans_id_tree_path('file') |
|
531 |
preview.adjust_path('newname', preview.root, file_trans_id) |
|
532 |
preview_tree = preview.get_preview_tree() |
|
533 |
expected = [ |
|
534 |
(revid1, b'a\n'), |
|
535 |
]
|
|
536 |
annotation = preview_tree.annotate_iter( |
|
7490.133.14
by Jelmer Vernooij
More refactoring. |
537 |
'newname', default_revision=b'me:') |
538 |
self.assertEqual(expected, annotation) |
|
539 |
annotation = preview_tree.annotate_iter( |
|
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
540 |
'file', default_revision=b'me:') |
7490.133.14
by Jelmer Vernooij
More refactoring. |
541 |
self.assertIs(None, annotation) |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
542 |
|
543 |
def test_annotate_deleted(self): |
|
544 |
tree = self.make_branch_and_tree('tree') |
|
545 |
self.build_tree_contents([('tree/file', b'a\n')]) |
|
546 |
tree.add('file') |
|
547 |
tree.commit('a') |
|
548 |
self.build_tree_contents([('tree/file', b'a\nb\n')]) |
|
549 |
preview = tree.preview_transform() |
|
550 |
self.addCleanup(preview.finalize) |
|
551 |
file_trans_id = preview.trans_id_tree_path('file') |
|
552 |
preview.delete_contents(file_trans_id) |
|
553 |
preview_tree = preview.get_preview_tree() |
|
554 |
annotation = preview_tree.annotate_iter( |
|
555 |
'file', default_revision=b'me:') |
|
556 |
self.assertIs(None, annotation) |
|
557 |
||
558 |
def test_stored_kind(self): |
|
559 |
preview = self.get_empty_preview() |
|
560 |
preview.new_file('file', preview.root, [b'a\nb\nc\n'], b'file-id') |
|
561 |
preview_tree = preview.get_preview_tree() |
|
562 |
self.assertEqual('file', preview_tree.stored_kind('file')) |
|
563 |
||
564 |
def test_is_executable(self): |
|
565 |
preview = self.get_empty_preview() |
|
7490.133.9
by Jelmer Vernooij
More improvements to the Git transform implementation. |
566 |
trans_id = preview.new_file('file', preview.root, [b'a\nb\nc\n'], b'file-id') |
567 |
preview.set_executability(True, trans_id) |
|
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
568 |
preview_tree = preview.get_preview_tree() |
569 |
self.assertEqual(True, preview_tree.is_executable('file')) |
|
570 |
||
571 |
def test_get_set_parent_ids(self): |
|
572 |
revision_tree, preview_tree = self.get_tree_and_preview_tree() |
|
573 |
self.assertEqual([], preview_tree.get_parent_ids()) |
|
574 |
preview_tree.set_parent_ids([revision_tree.get_revision_id()]) |
|
575 |
self.assertEqual( |
|
576 |
[revision_tree.get_revision_id()], |
|
577 |
preview_tree.get_parent_ids()) |
|
578 |
||
579 |
def test_plan_file_merge(self): |
|
580 |
work_a = self.make_branch_and_tree('wta') |
|
581 |
self.build_tree_contents([('wta/file', b'a\nb\nc\nd\n')]) |
|
582 |
work_a.add('file') |
|
583 |
base_id = work_a.commit('base version') |
|
584 |
tree_b = work_a.controldir.sprout('wtb').open_workingtree() |
|
585 |
preview = work_a.preview_transform() |
|
586 |
self.addCleanup(preview.finalize) |
|
587 |
trans_id = preview.trans_id_tree_path('file') |
|
588 |
preview.delete_contents(trans_id) |
|
589 |
preview.create_file([b'b\nc\nd\ne\n'], trans_id) |
|
590 |
self.build_tree_contents([('wtb/file', b'a\nc\nd\nf\n')]) |
|
591 |
tree_a = preview.get_preview_tree() |
|
7490.133.9
by Jelmer Vernooij
More improvements to the Git transform implementation. |
592 |
if not getattr(tree_a, 'plan_file_merge', None): |
593 |
self.skipTest('tree does not support file merge planning') |
|
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
594 |
tree_a.set_parent_ids([base_id]) |
595 |
self.addCleanup(tree_b.lock_read().unlock) |
|
596 |
self.assertEqual([ |
|
597 |
('killed-a', b'a\n'), |
|
598 |
('killed-b', b'b\n'), |
|
599 |
('unchanged', b'c\n'), |
|
600 |
('unchanged', b'd\n'), |
|
601 |
('new-a', b'e\n'), |
|
602 |
('new-b', b'f\n'), |
|
603 |
], list(tree_a.plan_file_merge('file', tree_b))) |
|
604 |
||
605 |
def test_plan_file_merge_revision_tree(self): |
|
606 |
work_a = self.make_branch_and_tree('wta') |
|
607 |
self.build_tree_contents([('wta/file', b'a\nb\nc\nd\n')]) |
|
608 |
work_a.add('file') |
|
609 |
base_id = work_a.commit('base version') |
|
610 |
tree_b = work_a.controldir.sprout('wtb').open_workingtree() |
|
611 |
preview = work_a.basis_tree().preview_transform() |
|
612 |
self.addCleanup(preview.finalize) |
|
613 |
trans_id = preview.trans_id_tree_path('file') |
|
614 |
preview.delete_contents(trans_id) |
|
615 |
preview.create_file([b'b\nc\nd\ne\n'], trans_id) |
|
616 |
self.build_tree_contents([('wtb/file', b'a\nc\nd\nf\n')]) |
|
617 |
tree_a = preview.get_preview_tree() |
|
7490.133.9
by Jelmer Vernooij
More improvements to the Git transform implementation. |
618 |
if not getattr(tree_a, 'plan_file_merge', None): |
619 |
self.skipTest('tree does not support file merge planning') |
|
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
620 |
tree_a.set_parent_ids([base_id]) |
621 |
self.addCleanup(tree_b.lock_read().unlock) |
|
622 |
self.assertEqual([ |
|
623 |
('killed-a', b'a\n'), |
|
624 |
('killed-b', b'b\n'), |
|
625 |
('unchanged', b'c\n'), |
|
626 |
('unchanged', b'd\n'), |
|
627 |
('new-a', b'e\n'), |
|
628 |
('new-b', b'f\n'), |
|
629 |
], list(tree_a.plan_file_merge('file', tree_b))) |
|
630 |
||
631 |
def test_walkdirs(self): |
|
632 |
preview = self.get_empty_preview() |
|
633 |
preview.new_directory('', ROOT_PARENT, b'tree-root') |
|
634 |
# FIXME: new_directory should mark root.
|
|
635 |
preview.fixup_new_roots() |
|
636 |
preview_tree = preview.get_preview_tree() |
|
637 |
preview.new_file('a', preview.root, [b'contents'], b'a-id') |
|
7490.133.7
by Jelmer Vernooij
Merge walkdirs-no-file-id. |
638 |
expected = [('', [('a', 'a', 'file', None, 'file')])] |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
639 |
self.assertEqual(expected, list(preview_tree.walkdirs())) |
640 |
||
641 |
def test_extras(self): |
|
642 |
work_tree = self.make_branch_and_tree('tree') |
|
643 |
self.build_tree(['tree/removed-file', 'tree/existing-file', |
|
644 |
'tree/not-removed-file']) |
|
645 |
work_tree.add(['removed-file', 'not-removed-file']) |
|
646 |
preview = work_tree.preview_transform() |
|
647 |
self.addCleanup(preview.finalize) |
|
648 |
preview.new_file('new-file', preview.root, [b'contents']) |
|
649 |
preview.new_file('new-versioned-file', preview.root, [b'contents'], |
|
650 |
b'new-versioned-id') |
|
651 |
tree = preview.get_preview_tree() |
|
7490.133.9
by Jelmer Vernooij
More improvements to the Git transform implementation. |
652 |
self.assertEquals({'existing-file'}, set(work_tree.extras())) |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
653 |
preview.unversion_file(preview.trans_id_tree_path('removed-file')) |
654 |
self.assertEqual({'new-file', 'removed-file', 'existing-file'}, |
|
655 |
set(tree.extras())) |
|
656 |
||
657 |
def test_merge_into_preview(self): |
|
658 |
work_tree = self.make_branch_and_tree('tree') |
|
659 |
self.build_tree_contents([('tree/file', b'b\n')]) |
|
660 |
work_tree.add('file') |
|
661 |
work_tree.commit('first commit') |
|
662 |
child_tree = work_tree.controldir.sprout('child').open_workingtree() |
|
663 |
self.build_tree_contents([('child/file', b'b\nc\n')]) |
|
664 |
child_tree.commit('child commit') |
|
665 |
child_tree.lock_write() |
|
666 |
self.addCleanup(child_tree.unlock) |
|
667 |
work_tree.lock_write() |
|
668 |
self.addCleanup(work_tree.unlock) |
|
669 |
preview = work_tree.preview_transform() |
|
670 |
self.addCleanup(preview.finalize) |
|
671 |
file_trans_id = preview.trans_id_tree_path('file') |
|
672 |
preview.delete_contents(file_trans_id) |
|
673 |
preview.create_file([b'a\nb\n'], file_trans_id) |
|
674 |
preview_tree = preview.get_preview_tree() |
|
675 |
merger = Merger.from_revision_ids(preview_tree, |
|
676 |
child_tree.branch.last_revision(), |
|
677 |
other_branch=child_tree.branch, |
|
678 |
tree_branch=work_tree.branch) |
|
679 |
merger.merge_type = Merge3Merger |
|
680 |
tt = merger.make_merger().make_preview_transform() |
|
681 |
self.addCleanup(tt.finalize) |
|
682 |
final_tree = tt.get_preview_tree() |
|
683 |
self.assertEqual( |
|
684 |
b'a\nb\nc\n', |
|
685 |
final_tree.get_file_text('file')) |
|
686 |
||
687 |
def test_merge_preview_into_workingtree(self): |
|
688 |
tree = self.make_branch_and_tree('tree') |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
689 |
if tree.supports_setting_file_ids(): |
690 |
tree.set_root_id(b'TREE_ROOT') |
|
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
691 |
tt = tree.preview_transform() |
692 |
self.addCleanup(tt.finalize) |
|
693 |
tt.new_file('name', tt.root, [b'content'], b'file-id') |
|
694 |
tree2 = self.make_branch_and_tree('tree2') |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
695 |
if tree.supports_setting_file_ids(): |
696 |
tree2.set_root_id(b'TREE_ROOT') |
|
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
697 |
merger = Merger.from_uncommitted(tree2, tt.get_preview_tree(), |
698 |
tree.basis_tree()) |
|
699 |
merger.merge_type = Merge3Merger |
|
700 |
merger.do_merge() |
|
701 |
||
702 |
def test_merge_preview_into_workingtree_handles_conflicts(self): |
|
703 |
tree = self.make_branch_and_tree('tree') |
|
704 |
self.build_tree_contents([('tree/foo', b'bar')]) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
705 |
tree.add('foo') |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
706 |
tree.commit('foo') |
707 |
tt = tree.preview_transform() |
|
708 |
self.addCleanup(tt.finalize) |
|
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
709 |
trans_id = tt.trans_id_tree_path('foo') |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
710 |
tt.delete_contents(trans_id) |
711 |
tt.create_file([b'baz'], trans_id) |
|
712 |
tree2 = tree.controldir.sprout('tree2').open_workingtree() |
|
713 |
self.build_tree_contents([('tree2/foo', b'qux')]) |
|
714 |
merger = Merger.from_uncommitted(tree2, tt.get_preview_tree(), |
|
715 |
tree.basis_tree()) |
|
716 |
merger.merge_type = Merge3Merger |
|
717 |
merger.do_merge() |
|
718 |
||
719 |
def test_has_filename(self): |
|
720 |
wt = self.make_branch_and_tree('tree') |
|
721 |
self.build_tree(['tree/unmodified', 'tree/removed', 'tree/modified']) |
|
722 |
tt = wt.preview_transform() |
|
723 |
removed_id = tt.trans_id_tree_path('removed') |
|
724 |
tt.delete_contents(removed_id) |
|
725 |
tt.new_file('new', tt.root, [b'contents']) |
|
726 |
modified_id = tt.trans_id_tree_path('modified') |
|
727 |
tt.delete_contents(modified_id) |
|
728 |
tt.create_file([b'modified-contents'], modified_id) |
|
729 |
self.addCleanup(tt.finalize) |
|
730 |
tree = tt.get_preview_tree() |
|
731 |
self.assertTrue(tree.has_filename('unmodified')) |
|
732 |
self.assertFalse(tree.has_filename('not-present')) |
|
733 |
self.assertFalse(tree.has_filename('removed')) |
|
734 |
self.assertTrue(tree.has_filename('new')) |
|
735 |
self.assertTrue(tree.has_filename('modified')) |
|
736 |
||
7490.84.1
by Jelmer Vernooij
Split out git and bzr-specific transform. |
737 |
def test_is_executable2(self): |
7490.83.9
by Jelmer Vernooij
Split out per-tree transform preview tests. |
738 |
tree = self.make_branch_and_tree('tree') |
739 |
preview = tree.preview_transform() |
|
740 |
self.addCleanup(preview.finalize) |
|
741 |
preview.new_file('foo', preview.root, [b'bar'], b'baz-id') |
|
742 |
preview_tree = preview.get_preview_tree() |
|
743 |
self.assertEqual(False, preview_tree.is_executable('tree/foo')) |
|
744 |
||
745 |
def test_commit_preview_tree(self): |
|
746 |
tree = self.make_branch_and_tree('tree') |
|
747 |
rev_id = tree.commit('rev1') |
|
748 |
tree.branch.lock_write() |
|
749 |
self.addCleanup(tree.branch.unlock) |
|
750 |
tt = tree.preview_transform() |
|
751 |
tt.new_file('file', tt.root, [b'contents'], b'file_id') |
|
752 |
self.addCleanup(tt.finalize) |
|
753 |
preview = tt.get_preview_tree() |
|
754 |
preview.set_parent_ids([rev_id]) |
|
755 |
builder = tree.branch.get_commit_builder([rev_id]) |
|
756 |
list(builder.record_iter_changes(preview, rev_id, tt.iter_changes())) |
|
757 |
builder.finish_inventory() |
|
758 |
rev2_id = builder.commit('rev2') |
|
759 |
rev2_tree = tree.branch.repository.revision_tree(rev2_id) |
|
760 |
self.assertEqual(b'contents', rev2_tree.get_file_text('file')) |
|
761 |
||
762 |
def test_ascii_limbo_paths(self): |
|
763 |
self.requireFeature(UnicodeFilenameFeature) |
|
764 |
branch = self.make_branch('any') |
|
765 |
tree = branch.repository.revision_tree(_mod_revision.NULL_REVISION) |
|
766 |
tt = tree.preview_transform() |
|
767 |
self.addCleanup(tt.finalize) |
|
768 |
foo_id = tt.new_directory('', ROOT_PARENT) |
|
769 |
bar_id = tt.new_file(u'\u1234bar', foo_id, [b'contents']) |
|
770 |
limbo_path = tt._limbo_name(bar_id) |
|
771 |
self.assertEqual(limbo_path, limbo_path) |