1
# Copyright (C) 2006, 2007, 2008 Canonical Ltd
1
# Copyright (C) 2006-2010 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
136
136
transform.finalize()
137
137
transform.finalize()
139
def test_change_root_id(self):
140
transform, root = self.get_transform()
141
self.assertNotEqual('new-root-id', self.wt.get_root_id())
142
transform.new_directory('', ROOT_PARENT, 'new-root-id')
143
transform.delete_contents(root)
144
transform.unversion_file(root)
145
transform.fixup_new_roots()
147
self.assertEqual('new-root-id', self.wt.get_root_id())
149
def test_change_root_id_add_files(self):
150
transform, root = self.get_transform()
151
self.assertNotEqual('new-root-id', self.wt.get_root_id())
152
new_trans_id = transform.new_directory('', ROOT_PARENT, 'new-root-id')
153
transform.new_file('file', new_trans_id, ['new-contents\n'],
155
transform.delete_contents(root)
156
transform.unversion_file(root)
157
transform.fixup_new_roots()
159
self.assertEqual('new-root-id', self.wt.get_root_id())
160
self.assertEqual('new-file-id', self.wt.path2id('file'))
161
self.assertFileEqual('new-contents\n', self.wt.abspath('file'))
163
def test_add_two_roots(self):
164
transform, root = self.get_transform()
165
new_trans_id = transform.new_directory('', ROOT_PARENT, 'new-root-id')
166
new_trans_id = transform.new_directory('', ROOT_PARENT, 'alt-root-id')
167
self.assertRaises(ValueError, transform.fixup_new_roots)
139
169
def test_hardlink(self):
140
170
self.requireFeature(HardlinkFeature)
141
171
transform, root = self.get_transform()
747
777
transform, root = self.get_transform()
748
778
transform.adjust_root_path('oldroot', fun)
749
new_root=transform.trans_id_tree_path('')
779
new_root = transform.trans_id_tree_path('')
750
780
transform.version_file('new-root', new_root)
751
781
transform.apply()
2146
2176
def create_tree(self):
2147
2177
tree = self.make_branch_and_tree('.')
2148
2178
self.build_tree_contents([('a', 'content 1')])
2179
tree.set_root_id('TREE_ROOT')
2149
2180
tree.add('a', 'a-id')
2150
2181
tree.commit('rev1', rev_id='rev1')
2151
2182
return tree.branch.repository.revision_tree('rev1')
2428
2459
def test_file_content_summary_executable(self):
2429
2460
if not osutils.supports_executable():
2430
raise TestNotApplicable()
2461
raise tests.TestNotApplicable()
2431
2462
preview = self.get_empty_preview()
2432
2463
path_id = preview.new_file('path', preview.root, 'contents', 'path-id')
2433
2464
preview.set_executability(True, path_id)
2442
2473
self.assertIs(None, summary[3])
2444
2475
def test_change_executability(self):
2445
if not osutils.supports_executable():
2446
raise TestNotApplicable()
2447
2476
tree = self.make_branch_and_tree('tree')
2448
2477
self.build_tree(['tree/path'])
2449
2478
tree.add('path')
2614
2643
def test_walkdirs(self):
2615
2644
preview = self.get_empty_preview()
2616
preview.version_file('tree-root', preview.root)
2645
root = preview.new_directory('', ROOT_PARENT, 'tree-root')
2646
# FIXME: new_directory should mark root.
2647
preview.fixup_new_roots()
2617
2648
preview_tree = preview.get_preview_tree()
2618
2649
file_trans_id = preview.new_file('a', preview.root, 'contents',
2650
2681
self.addCleanup(work_tree.unlock)
2651
2682
preview = TransformPreview(work_tree)
2652
2683
self.addCleanup(preview.finalize)
2653
preview_tree = preview.get_preview_tree()
2654
2684
file_trans_id = preview.trans_id_file_id('file-id')
2655
2685
preview.delete_contents(file_trans_id)
2656
2686
preview.create_file('a\nb\n', file_trans_id)
2657
2687
pb = progress.DummyProgress()
2688
preview_tree = preview.get_preview_tree()
2658
2689
merger = Merger.from_revision_ids(pb, preview_tree,
2659
2690
child_tree.branch.last_revision(),
2660
2691
other_branch=child_tree.branch,
2668
2699
def test_merge_preview_into_workingtree(self):
2669
2700
tree = self.make_branch_and_tree('tree')
2701
tree.set_root_id('TREE_ROOT')
2670
2702
tt = TransformPreview(tree)
2671
2703
self.addCleanup(tt.finalize)
2672
2704
tt.new_file('name', tt.root, 'content', 'file-id')
2673
2705
tree2 = self.make_branch_and_tree('tree2')
2706
tree2.set_root_id('TREE_ROOT')
2674
2707
pb = progress.DummyProgress()
2675
2708
merger = Merger.from_uncommitted(tree2, tt.get_preview_tree(),
2676
2709
pb, tree.basis_tree())
2722
2755
rev2_tree = tree.branch.repository.revision_tree(rev2_id)
2723
2756
self.assertEqual('contents', rev2_tree.get_file_text('file_id'))
2758
def test_ascii_limbo_paths(self):
2759
self.requireFeature(tests.UnicodeFilenameFeature)
2760
branch = self.make_branch('any')
2761
tree = branch.repository.revision_tree(_mod_revision.NULL_REVISION)
2762
tt = TransformPreview(tree)
2763
foo_id = tt.new_directory('', ROOT_PARENT)
2764
bar_id = tt.new_file(u'\u1234bar', foo_id, 'contents')
2765
limbo_path = tt._limbo_name(bar_id)
2766
self.assertEqual(limbo_path.encode('ascii', 'replace'), limbo_path)
2726
2769
class FakeSerializer(object):
2727
2770
"""Serializer implementation that simply returns the input.