39
39
def test_smart_add_symlink(self):
40
40
tree = self.make_branch_and_tree('tree')
41
41
self.build_tree_contents([
42
('tree/link@', 'target'),
42
('tree/link@', b'target'),
44
44
tree.smart_add(['tree/link'])
45
self.assertIsNot(None, tree.path2id('link'))
46
self.assertIs(None, tree.path2id('target'))
47
self.assertEqual('symlink',
48
tree.kind(tree.path2id('link')))
45
self.assertTrue(tree.is_versioned('link'))
46
self.assertFalse(tree.is_versioned('target'))
47
self.assertEqual('symlink', tree.kind('link'))
50
49
def test_smart_add_symlink_pointing_outside(self):
51
50
tree = self.make_branch_and_tree('tree')
53
52
('tree/link@', '../../../../target'),
55
54
tree.smart_add(['tree/link'])
56
self.assertIsNot(None, tree.path2id('link'))
57
self.assertIs(None, tree.path2id('target'))
58
self.assertEqual('symlink',
59
tree.kind(tree.path2id('link')))
55
self.assertTrue(tree.is_versioned('link'))
56
self.assertFalse(tree.is_versioned('target'))
57
self.assertEqual('symlink', tree.kind('link'))
61
59
def test_add_file_under_symlink(self):
63
61
# https://bugs.launchpad.net/bzr/+bug/192859/comments/3
64
62
tree = self.make_branch_and_tree('tree')
65
63
self.build_tree_contents([
66
64
('tree/link@', 'dir'),
68
('tree/dir/file', 'content'),
66
('tree/dir/file', b'content'),
71
tree.smart_add(['tree/link/file']),
72
([u'dir', u'dir/file'], {}))
68
if tree.has_versioned_directories():
70
tree.smart_add(['tree/link/file']),
71
([u'dir', u'dir/file'], {}))
74
tree.smart_add(['tree/link/file']),
73
77
# should add the actual parent directory, not the apparent parent
74
78
# (which is actually a symlink)
75
self.assertTrue(tree.path2id('dir/file'))
76
self.assertTrue(tree.path2id('dir'))
77
self.assertIs(None, tree.path2id('link'))
78
self.assertIs(None, tree.path2id('link/file'))
79
self.assertTrue(tree.is_versioned('dir/file'))
80
self.assertTrue(tree.is_versioned('dir'))
81
self.assertFalse(tree.is_versioned('link'))
82
self.assertFalse(tree.is_versioned('link/file'))
81
85
class TestKindChanges(TestCaseWithWorkingTree):
97
101
os.unlink('tree/a')
98
102
self.build_tree_contents([
100
('tree/a/f', 'content'),
104
('tree/a/f', b'content'),
102
106
tree.smart_add(['tree/a/f'])
103
107
tree.commit('change to dir')
105
109
self.addCleanup(tree.unlock)
106
110
self.assertEqual([], list(tree.iter_changes(tree.basis_tree())))
107
if tree._format.supports_versioned_directories:
109
['a', 'a/f'], sorted(info[0] for info in tree.list_files()))
111
self.assertEqual([], list(tree.list_files()))
112
['a', 'a/f'], sorted(info[0] for info in tree.list_files()))
113
114
def test_dir_changes_to_symlink(self):
114
115
# <https://bugs.launchpad.net/bzr/+bug/192859>:
120
121
tree = self.make_branch_and_tree('tree')
121
122
self.build_tree_contents([
123
('tree/a/file', 'content'),
124
('tree/a/file', b'content'),
125
126
tree.smart_add(['tree/a'])
126
127
tree.commit('add dir')
173
174
self.build_tree_contents([
174
175
('link@', 'tree'),
175
176
('tree/outerlink@', '/not/there'),
176
('tree/content', 'hello'),
177
('tree/content', b'hello'),
177
178
('tree/sublink@', 'subdir'),
178
179
('tree/subdir/',),
179
('tree/subdir/subcontent', 'subcontent stuff')
180
('tree/subdir/subcontent', b'subcontent stuff')