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()
2429
2459
def test_file_content_summary_executable(self):
2430
2460
if not osutils.supports_executable():
2431
raise TestNotApplicable()
2461
raise tests.TestNotApplicable()
2432
2462
preview = self.get_empty_preview()
2433
2463
path_id = preview.new_file('path', preview.root, 'contents', 'path-id')
2434
2464
preview.set_executability(True, path_id)
2443
2473
self.assertIs(None, summary[3])
2445
2475
def test_change_executability(self):
2446
if not osutils.supports_executable():
2447
raise TestNotApplicable()
2448
2476
tree = self.make_branch_and_tree('tree')
2449
2477
self.build_tree(['tree/path'])
2450
2478
tree.add('path')
2615
2643
def test_walkdirs(self):
2616
2644
preview = self.get_empty_preview()
2617
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()
2618
2648
preview_tree = preview.get_preview_tree()
2619
2649
file_trans_id = preview.new_file('a', preview.root, 'contents',
2651
2681
self.addCleanup(work_tree.unlock)
2652
2682
preview = TransformPreview(work_tree)
2653
2683
self.addCleanup(preview.finalize)
2654
preview_tree = preview.get_preview_tree()
2655
2684
file_trans_id = preview.trans_id_file_id('file-id')
2656
2685
preview.delete_contents(file_trans_id)
2657
2686
preview.create_file('a\nb\n', file_trans_id)
2658
2687
pb = progress.DummyProgress()
2688
preview_tree = preview.get_preview_tree()
2659
2689
merger = Merger.from_revision_ids(pb, preview_tree,
2660
2690
child_tree.branch.last_revision(),
2661
2691
other_branch=child_tree.branch,
2725
2755
rev2_tree = tree.branch.repository.revision_tree(rev2_id)
2726
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)
2729
2769
class FakeSerializer(object):
2730
2770
"""Serializer implementation that simply returns the input.