1229
1230
tt.version_file("bar-1", bar_trans_id)
1231
1232
self.failUnlessExists("foo/bar")
1235
self.assertEqual(wt.inventory.get_file_kind(wt.path2id("foo")),
1240
changes = wt.changes_from(wt.basis_tree())
1241
self.assertFalse(changes.has_changed(), changes)
1243
def test_file_to_symlink(self):
1244
self.requireFeature(SymlinkFeature)
1245
wt = self.make_branch_and_tree('.')
1246
self.build_tree(['foo'])
1249
tt = TreeTransform(wt)
1250
self.addCleanup(tt.finalize)
1251
foo_trans_id = tt.trans_id_tree_path("foo")
1252
tt.delete_contents(foo_trans_id)
1253
tt.create_symlink("bar", foo_trans_id)
1255
self.failUnlessExists("foo")
1257
self.addCleanup(wt.unlock)
1258
self.assertEqual(wt.inventory.get_file_kind(wt.path2id("foo")),
1261
def test_dir_to_file(self):
1262
wt = self.make_branch_and_tree('.')
1263
self.build_tree(['foo/', 'foo/bar'])
1264
wt.add(['foo', 'foo/bar'])
1266
tt = TreeTransform(wt)
1267
self.addCleanup(tt.finalize)
1268
foo_trans_id = tt.trans_id_tree_path("foo")
1269
bar_trans_id = tt.trans_id_tree_path("foo/bar")
1270
tt.delete_contents(foo_trans_id)
1271
tt.delete_versioned(bar_trans_id)
1272
tt.create_file(["aa\n"], foo_trans_id)
1274
self.failUnlessExists("foo")
1276
self.addCleanup(wt.unlock)
1277
self.assertEqual(wt.inventory.get_file_kind(wt.path2id("foo")),
1280
def test_dir_to_hardlink(self):
1281
self.requireFeature(HardlinkFeature)
1282
wt = self.make_branch_and_tree('.')
1283
self.build_tree(['foo/', 'foo/bar'])
1284
wt.add(['foo', 'foo/bar'])
1286
tt = TreeTransform(wt)
1287
self.addCleanup(tt.finalize)
1288
foo_trans_id = tt.trans_id_tree_path("foo")
1289
bar_trans_id = tt.trans_id_tree_path("foo/bar")
1290
tt.delete_contents(foo_trans_id)
1291
tt.delete_versioned(bar_trans_id)
1292
self.build_tree(['baz'])
1293
tt.create_hardlink("baz", foo_trans_id)
1295
self.failUnlessExists("foo")
1296
self.failUnlessExists("baz")
1298
self.addCleanup(wt.unlock)
1299
self.assertEqual(wt.inventory.get_file_kind(wt.path2id("foo")),
1302
def test_no_final_path(self):
1303
transform, root = self.get_transform()
1304
trans_id = transform.trans_id_file_id('foo')
1305
transform.create_file('bar', trans_id)
1306
transform.cancel_creation(trans_id)
1234
1310
class TransformGroup(object):
2314
2390
preview.set_executability(True, preview.trans_id_file_id('file-id'))
2315
2391
preview_tree = preview.get_preview_tree()
2316
2392
self.assertEqual(True, preview_tree.is_executable('file-id'))
2394
def test_get_set_parent_ids(self):
2395
revision_tree, preview_tree = self.get_tree_and_preview_tree()
2396
self.assertEqual([], preview_tree.get_parent_ids())
2397
preview_tree.set_parent_ids(['rev-1'])
2398
self.assertEqual(['rev-1'], preview_tree.get_parent_ids())
2400
def test_plan_file_merge(self):
2401
work_a = self.make_branch_and_tree('wta')
2402
self.build_tree_contents([('wta/file', 'a\nb\nc\nd\n')])
2403
work_a.add('file', 'file-id')
2404
base_id = work_a.commit('base version')
2405
tree_b = work_a.bzrdir.sprout('wtb').open_workingtree()
2406
preview = TransformPreview(work_a)
2407
self.addCleanup(preview.finalize)
2408
trans_id = preview.trans_id_file_id('file-id')
2409
preview.delete_contents(trans_id)
2410
preview.create_file('b\nc\nd\ne\n', trans_id)
2411
self.build_tree_contents([('wtb/file', 'a\nc\nd\nf\n')])
2412
tree_a = preview.get_preview_tree()
2413
tree_a.set_parent_ids([base_id])
2415
('killed-a', 'a\n'),
2416
('killed-b', 'b\n'),
2417
('unchanged', 'c\n'),
2418
('unchanged', 'd\n'),
2421
], list(tree_a.plan_file_merge('file-id', tree_b)))
2423
def test_plan_file_merge_revision_tree(self):
2424
work_a = self.make_branch_and_tree('wta')
2425
self.build_tree_contents([('wta/file', 'a\nb\nc\nd\n')])
2426
work_a.add('file', 'file-id')
2427
base_id = work_a.commit('base version')
2428
tree_b = work_a.bzrdir.sprout('wtb').open_workingtree()
2429
preview = TransformPreview(work_a.basis_tree())
2430
self.addCleanup(preview.finalize)
2431
trans_id = preview.trans_id_file_id('file-id')
2432
preview.delete_contents(trans_id)
2433
preview.create_file('b\nc\nd\ne\n', trans_id)
2434
self.build_tree_contents([('wtb/file', 'a\nc\nd\nf\n')])
2435
tree_a = preview.get_preview_tree()
2436
tree_a.set_parent_ids([base_id])
2438
('killed-a', 'a\n'),
2439
('killed-b', 'b\n'),
2440
('unchanged', 'c\n'),
2441
('unchanged', 'd\n'),
2444
], list(tree_a.plan_file_merge('file-id', tree_b)))
2446
def test_walkdirs(self):
2447
preview = self.get_empty_preview()
2448
preview.version_file('tree-root', preview.root)
2449
preview_tree = preview.get_preview_tree()
2450
file_trans_id = preview.new_file('a', preview.root, 'contents',
2452
expected = [(('', 'tree-root'),
2453
[('a', 'a', 'file', None, 'a-id', 'file')])]
2454
self.assertEqual(expected, list(preview_tree.walkdirs()))