2031
2031
preview_tree = preview.get_preview_tree()
2032
2032
self.assertEqual('target',
2033
2033
preview_tree.get_symlink_target('symlink-id'))
2035
def test_all_file_ids(self):
2036
tree = self.make_branch_and_tree('tree')
2037
self.build_tree(['tree/a', 'tree/b', 'tree/c'])
2038
tree.add(['a', 'b', 'c'], ['a-id', 'b-id', 'c-id'])
2039
preview = TransformPreview(tree)
2040
self.addCleanup(preview.finalize)
2041
preview.unversion_file(preview.trans_id_file_id('b-id'))
2042
c_trans_id = preview.trans_id_file_id('c-id')
2043
preview.unversion_file(c_trans_id)
2044
preview.version_file('c-id', c_trans_id)
2045
preview_tree = preview.get_preview_tree()
2046
self.assertEqual(set(['a-id', 'c-id', tree.get_root_id()]),
2047
preview_tree.all_file_ids())
2049
def test_path2id_deleted_unchanged(self):
2050
tree = self.make_branch_and_tree('tree')
2051
self.build_tree(['tree/unchanged', 'tree/deleted'])
2052
tree.add(['unchanged', 'deleted'], ['unchanged-id', 'deleted-id'])
2053
preview = TransformPreview(tree)
2054
self.addCleanup(preview.finalize)
2055
preview.unversion_file(preview.trans_id_file_id('deleted-id'))
2056
preview_tree = preview.get_preview_tree()
2057
self.assertEqual('unchanged-id', preview_tree.path2id('unchanged'))
2058
self.assertIs(None, preview_tree.path2id('deleted'))
2060
def test_path2id_created(self):
2061
tree = self.make_branch_and_tree('tree')
2062
self.build_tree(['tree/unchanged'])
2063
tree.add(['unchanged'], ['unchanged-id'])
2064
preview = TransformPreview(tree)
2065
self.addCleanup(preview.finalize)
2066
preview.new_file('new', preview.trans_id_file_id('unchanged-id'),
2067
'contents', 'new-id')
2068
preview_tree = preview.get_preview_tree()
2069
self.assertEqual('new-id', preview_tree.path2id('unchanged/new'))
2071
def test_path2id_moved(self):
2072
tree = self.make_branch_and_tree('tree')
2073
self.build_tree(['tree/old_parent/', 'tree/old_parent/child'])
2074
tree.add(['old_parent', 'old_parent/child'],
2075
['old_parent-id', 'child-id'])
2076
preview = TransformPreview(tree)
2077
self.addCleanup(preview.finalize)
2078
new_parent = preview.new_directory('new_parent', preview.root,
2080
preview.adjust_path('child', new_parent,
2081
preview.trans_id_file_id('child-id'))
2082
preview_tree = preview.get_preview_tree()
2083
self.assertIs(None, preview_tree.path2id('old_parent/child'))
2084
self.assertEqual('child-id', preview_tree.path2id('new_parent/child'))
2086
def test_path2id_renamed_parent(self):
2087
tree = self.make_branch_and_tree('tree')
2088
self.build_tree(['tree/old_name/', 'tree/old_name/child'])
2089
tree.add(['old_name', 'old_name/child'],
2090
['parent-id', 'child-id'])
2091
preview = TransformPreview(tree)
2092
self.addCleanup(preview.finalize)
2093
preview.adjust_path('new_name', preview.root,
2094
preview.trans_id_file_id('parent-id'))
2095
preview_tree = preview.get_preview_tree()
2096
self.assertIs(None, preview_tree.path2id('old_name/child'))
2097
self.assertEqual('child-id', preview_tree.path2id('new_name/child'))
2099
def assertMatchingIterEntries(self, tt, specific_file_ids=None):
2100
preview_tree = tt.get_preview_tree()
2101
preview_result = list(preview_tree.iter_entries_by_dir(
2105
actual_result = list(tree.iter_entries_by_dir(specific_file_ids))
2106
self.assertEqual(actual_result, preview_result)
2108
def test_iter_entries_by_dir_new(self):
2109
tree = self.make_branch_and_tree('tree')
2110
tt = TreeTransform(tree)
2111
tt.new_file('new', tt.root, 'contents', 'new-id')
2112
self.assertMatchingIterEntries(tt)
2114
def test_iter_entries_by_dir_deleted(self):
2115
tree = self.make_branch_and_tree('tree')
2116
self.build_tree(['tree/deleted'])
2117
tree.add('deleted', 'deleted-id')
2118
tt = TreeTransform(tree)
2119
tt.delete_contents(tt.trans_id_file_id('deleted-id'))
2120
self.assertMatchingIterEntries(tt)
2122
def test_iter_entries_by_dir_unversioned(self):
2123
tree = self.make_branch_and_tree('tree')
2124
self.build_tree(['tree/removed'])
2125
tree.add('removed', 'removed-id')
2126
tt = TreeTransform(tree)
2127
tt.unversion_file(tt.trans_id_file_id('removed-id'))
2128
self.assertMatchingIterEntries(tt)
2130
def test_iter_entries_by_dir_moved(self):
2131
tree = self.make_branch_and_tree('tree')
2132
self.build_tree(['tree/moved', 'tree/new_parent/'])
2133
tree.add(['moved', 'new_parent'], ['moved-id', 'new_parent-id'])
2134
tt = TreeTransform(tree)
2135
tt.adjust_path('moved', tt.trans_id_file_id('new_parent-id'),
2136
tt.trans_id_file_id('moved-id'))
2137
self.assertMatchingIterEntries(tt)
2139
def test_iter_entries_by_dir_specific_file_ids(self):
2140
tree = self.make_branch_and_tree('tree')
2141
tree.set_root_id('tree-root-id')
2142
self.build_tree(['tree/parent/', 'tree/parent/child'])
2143
tree.add(['parent', 'parent/child'], ['parent-id', 'child-id'])
2144
tt = TreeTransform(tree)
2145
self.assertMatchingIterEntries(tt, ['tree-root-id', 'child-id'])
2147
def test_symlink_content_summary(self):
2148
self.requireFeature(SymlinkFeature)
2149
preview = self.get_empty_preview()
2150
preview.new_symlink('path', preview.root, 'target', 'path-id')
2151
summary = preview.get_preview_tree().path_content_summary('path')
2152
self.assertEqual(('symlink', None, None, 'target'), summary)
2154
def test_missing_content_summary(self):
2155
preview = self.get_empty_preview()
2156
summary = preview.get_preview_tree().path_content_summary('path')
2157
self.assertEqual(('missing', None, None, None), summary)
2159
def test_deleted_content_summary(self):
2160
tree = self.make_branch_and_tree('tree')
2161
self.build_tree(['tree/path/'])
2163
preview = TransformPreview(tree)
2164
self.addCleanup(preview.finalize)
2165
preview.delete_contents(preview.trans_id_tree_path('path'))
2166
summary = preview.get_preview_tree().path_content_summary('path')
2167
self.assertEqual(('missing', None, None, None), summary)
2169
def test_file_content_summary_executable(self):
2170
if not osutils.supports_executable():
2171
raise TestNotApplicable()
2172
preview = self.get_empty_preview()
2173
path_id = preview.new_file('path', preview.root, 'contents', 'path-id')
2174
preview.set_executability(True, path_id)
2175
summary = preview.get_preview_tree().path_content_summary('path')
2176
self.assertEqual(4, len(summary))
2177
self.assertEqual('file', summary[0])
2178
# size must be known
2179
self.assertEqual(len('contents'), summary[1])
2181
self.assertEqual(True, summary[2])
2182
# will not have hash (not cheap to determine)
2183
self.assertIs(None, summary[3])
2185
def test_change_executability(self):
2186
if not osutils.supports_executable():
2187
raise TestNotApplicable()
2188
tree = self.make_branch_and_tree('tree')
2189
self.build_tree(['tree/path'])
2191
preview = TransformPreview(tree)
2192
self.addCleanup(preview.finalize)
2193
path_id = preview.trans_id_tree_path('path')
2194
preview.set_executability(True, path_id)
2195
summary = preview.get_preview_tree().path_content_summary('path')
2196
self.assertEqual(True, summary[2])
2198
def test_file_content_summary_non_exec(self):
2199
preview = self.get_empty_preview()
2200
preview.new_file('path', preview.root, 'contents', 'path-id')
2201
summary = preview.get_preview_tree().path_content_summary('path')
2202
self.assertEqual(4, len(summary))
2203
self.assertEqual('file', summary[0])
2204
# size must be known
2205
self.assertEqual(len('contents'), summary[1])
2207
if osutils.supports_executable():
2208
self.assertEqual(False, summary[2])
2210
self.assertEqual(None, summary[2])
2211
# will not have hash (not cheap to determine)
2212
self.assertIs(None, summary[3])
2214
def test_dir_content_summary(self):
2215
preview = self.get_empty_preview()
2216
preview.new_directory('path', preview.root, 'path-id')
2217
summary = preview.get_preview_tree().path_content_summary('path')
2218
self.assertEqual(('directory', None, None, None), summary)
2220
def test_tree_content_summary(self):
2221
preview = self.get_empty_preview()
2222
path = preview.new_directory('path', preview.root, 'path-id')
2223
preview.set_tree_reference('rev-1', path)
2224
summary = preview.get_preview_tree().path_content_summary('path')
2225
self.assertEqual(4, len(summary))
2226
self.assertEqual('tree-reference', summary[0])
2228
def test_annotate(self):
2229
tree = self.make_branch_and_tree('tree')
2230
self.build_tree_contents([('tree/file', 'a\n')])
2231
tree.add('file', 'file-id')
2232
tree.commit('a', rev_id='one')
2233
self.build_tree_contents([('tree/file', 'a\nb\n')])
2234
preview = TransformPreview(tree)
2235
self.addCleanup(preview.finalize)
2236
file_trans_id = preview.trans_id_file_id('file-id')
2237
preview.delete_contents(file_trans_id)
2238
preview.create_file('a\nb\nc\n', file_trans_id)
2239
preview_tree = preview.get_preview_tree()
2245
annotation = preview_tree.annotate_iter('file-id', 'me:')
2246
self.assertEqual(expected, annotation)
2248
def test_annotate_missing(self):
2249
preview = self.get_empty_preview()
2250
preview.new_file('file', preview.root, 'a\nb\nc\n', 'file-id')
2251
preview_tree = preview.get_preview_tree()
2257
annotation = preview_tree.annotate_iter('file-id', 'me:')
2258
self.assertEqual(expected, annotation)
2260
def test_annotate_rename(self):
2261
tree = self.make_branch_and_tree('tree')
2262
self.build_tree_contents([('tree/file', 'a\n')])
2263
tree.add('file', 'file-id')
2264
tree.commit('a', rev_id='one')
2265
preview = TransformPreview(tree)
2266
self.addCleanup(preview.finalize)
2267
file_trans_id = preview.trans_id_file_id('file-id')
2268
preview.adjust_path('newname', preview.root, file_trans_id)
2269
preview_tree = preview.get_preview_tree()
2273
annotation = preview_tree.annotate_iter('file-id', 'me:')
2274
self.assertEqual(expected, annotation)
2276
def test_annotate_deleted(self):
2277
tree = self.make_branch_and_tree('tree')
2278
self.build_tree_contents([('tree/file', 'a\n')])
2279
tree.add('file', 'file-id')
2280
tree.commit('a', rev_id='one')
2281
self.build_tree_contents([('tree/file', 'a\nb\n')])
2282
preview = TransformPreview(tree)
2283
self.addCleanup(preview.finalize)
2284
file_trans_id = preview.trans_id_file_id('file-id')
2285
preview.delete_contents(file_trans_id)
2286
preview_tree = preview.get_preview_tree()
2287
annotation = preview_tree.annotate_iter('file-id', 'me:')
2288
self.assertIs(None, annotation)
2290
def test_stored_kind(self):
2291
preview = self.get_empty_preview()
2292
preview.new_file('file', preview.root, 'a\nb\nc\n', 'file-id')
2293
preview_tree = preview.get_preview_tree()
2294
self.assertEqual('file', preview_tree.stored_kind('file-id'))
2296
def test_is_executable(self):
2297
preview = self.get_empty_preview()
2298
preview.new_file('file', preview.root, 'a\nb\nc\n', 'file-id')
2299
preview.set_executability(True, preview.trans_id_file_id('file-id'))
2300
preview_tree = preview.get_preview_tree()
2301
self.assertEqual(True, preview_tree.is_executable('file-id'))