1951
1951
branch, tt = self.get_branch_and_transform()
1952
1952
tt.new_file('file', tt.root, 'contents', 'file-id')
1953
1953
trans_id = tt.new_directory('dir', tt.root, 'dir-id')
1954
tt.new_symlink('symlink', trans_id, 'target', 'symlink-id')
1954
if SymlinkFeature.available():
1955
tt.new_symlink('symlink', trans_id, 'target', 'symlink-id')
1955
1956
rev = tt.commit(branch, 'message')
1956
1957
tree = branch.basis_tree()
1957
1958
self.assertEqual('file', tree.id2path('file-id'))
1958
1959
self.assertEqual('contents', tree.get_file_text('file-id'))
1959
1960
self.assertEqual('dir', tree.id2path('dir-id'))
1960
self.assertEqual('dir/symlink', tree.id2path('symlink-id'))
1961
self.assertEqual('target', tree.get_symlink_target('symlink-id'))
1961
if SymlinkFeature.available():
1962
self.assertEqual('dir/symlink', tree.id2path('symlink-id'))
1963
self.assertEqual('target', tree.get_symlink_target('symlink-id'))
1963
1965
def test_add_unversioned(self):
1964
1966
branch, tt = self.get_branch_and_transform()
2454
2456
self.assertEqual(('missing', None, None, None), summary)
2456
2458
def test_file_content_summary_executable(self):
2457
if not osutils.supports_executable():
2458
raise TestNotApplicable()
2459
2459
preview = self.get_empty_preview()
2460
2460
path_id = preview.new_file('path', preview.root, 'contents', 'path-id')
2461
2461
preview.set_executability(True, path_id)
2470
2470
self.assertIs(None, summary[3])
2472
2472
def test_change_executability(self):
2473
if not osutils.supports_executable():
2474
raise TestNotApplicable()
2475
2473
tree = self.make_branch_and_tree('tree')
2476
2474
self.build_tree(['tree/path'])
2477
2475
tree.add('path')
2491
2489
# size must be known
2492
2490
self.assertEqual(len('contents'), summary[1])
2493
2491
# not executable
2494
if osutils.supports_executable():
2495
self.assertEqual(False, summary[2])
2497
self.assertEqual(None, summary[2])
2492
self.assertEqual(False, summary[2])
2498
2493
# will not have hash (not cheap to determine)
2499
2494
self.assertIs(None, summary[3])
2754
2749
rev2_tree = tree.branch.repository.revision_tree(rev2_id)
2755
2750
self.assertEqual('contents', rev2_tree.get_file_text('file_id'))
2752
def test_ascii_limbo_paths(self):
2753
self.requireFeature(tests.UnicodeFilenameFeature)
2754
branch = self.make_branch('any')
2755
tree = branch.repository.revision_tree(_mod_revision.NULL_REVISION)
2756
tt = TransformPreview(tree)
2757
self.addCleanup(tt.finalize)
2758
foo_id = tt.new_directory('', ROOT_PARENT)
2759
bar_id = tt.new_file(u'\u1234bar', foo_id, 'contents')
2760
limbo_path = tt._limbo_name(bar_id)
2761
self.assertEqual(limbo_path.encode('ascii', 'replace'), limbo_path)
2758
2764
class FakeSerializer(object):
2759
2765
"""Serializer implementation that simply returns the input.