352
352
tree = self.make_branch_and_tree('.')
353
353
subtree = self.make_reference('reference')
355
356
tree.add_reference(subtree)
356
357
self._commit_check_unchanged(tree, 'reference',
400
401
# renaming a reference changes the last modified.
401
402
tree = self.make_branch_and_tree('.')
402
403
subtree = self.make_reference('reference')
404
406
tree.add_reference(subtree)
405
407
self._commit_renamed_check_changed(tree, 'reference')
419
421
def test_last_modified_revision_after_reparent_dir_changes(self):
420
422
# reparenting a dir changes the last modified.
421
423
tree = self.make_branch_and_tree('.')
424
if not tree.has_versioned_directories():
425
raise tests.TestNotApplicable(
426
'Format does not support versioned directories')
422
427
self.build_tree(['dir/'])
423
428
self._add_commit_reparent_check_changed(tree, 'dir')
489
494
file_id = tree.path2id(new_name)
490
495
self.assertIsNot(None, file_id)
492
tree_file_stat = tree.get_file_with_stat(new_name)
493
tree_file_stat[0].close()
494
self.assertLength(1, result)
496
self.assertEqual(result[:2], (file_id, new_name))
497
self.assertEqual(result[2][0], tree.get_file_sha1(new_name))
498
self.assertEqualStat(result[2][1], tree_file_stat[1])
500
self.assertEqual([], result)
496
if isinstance(tree, inventorytree.InventoryTree):
497
# TODO(jelmer): record_iter_changes shouldn't yield
498
# data that is WorkingTree-format-specific and uses file ids.
500
tree_file_stat = tree.get_file_with_stat(new_name)
501
tree_file_stat[0].close()
502
self.assertLength(1, result)
504
self.assertEqual(result[:2], (file_id, new_name))
505
self.assertEqual(result[2][0], tree.get_file_sha1(new_name))
506
self.assertEqualStat(result[2][1], tree_file_stat[1])
508
self.assertEqual([], result)
501
509
builder.finish_inventory()
502
510
if tree.branch.repository._format.supports_full_versioned_files:
503
511
inv_key = (builder._new_revision_id,)
511
519
delta = builder.get_basis_delta()
512
520
delta_dict = dict((change[2], change) for change in delta)
513
version_recorded = (file_id in delta_dict and
514
delta_dict[file_id][3] is not None and
515
delta_dict[file_id][3].revision == rev2)
517
self.assertTrue(version_recorded)
519
self.assertFalse(version_recorded)
521
if tree.branch.repository._format.records_per_file_revision:
522
version_recorded = (file_id in delta_dict and
523
delta_dict[file_id][3] is not None and
524
delta_dict[file_id][3].revision == rev2)
526
self.assertTrue(version_recorded)
528
self.assertFalse(version_recorded)
521
530
revtree = builder.revision_tree()
522
531
new_entry = revtree.iter_entries_by_dir(specific_files=[new_name]).next()[1]
529
538
self.assertEqual(expected_delta, delta_dict[file_id])
531
540
expected_delta = None
532
self.assertFalse(version_recorded)
541
if tree.branch.repository._format.records_per_file_revision:
542
self.assertFalse(version_recorded)
533
543
tree.set_parent_ids([rev2])
590
600
rev3 = self._rename_in_tree(tree2, name, 'rev3')
591
601
tree1.merge_from_branch(tree2.branch)
592
602
rev4 = self.mini_commit_record_iter_changes(tree1, 'new_' + name, 'new_' + name,
593
expect_fs_hash=expect_fs_hash)
603
expect_fs_hash=expect_fs_hash,
604
delta_against_basis=tree1.supports_rename_tracking())
594
605
tree3, = self._get_revtrees(tree1, [rev4])
595
self.assertEqual(rev4, tree3.get_file_revision('new_' + name))
596
606
expected_graph = {}
597
expected_graph[(file_id, rev1)] = ()
598
expected_graph[(file_id, rev2)] = ((file_id, rev1),)
599
expected_graph[(file_id, rev3)] = ((file_id, rev1),)
600
expected_graph[(file_id, rev4)] = ((file_id, rev2), (file_id, rev3),)
607
if tree1.supports_rename_tracking():
608
self.assertEqual(rev4, tree3.get_file_revision('new_' + name))
609
expected_graph[(file_id, rev1)] = ()
610
expected_graph[(file_id, rev2)] = ((file_id, rev1),)
611
expected_graph[(file_id, rev3)] = ((file_id, rev1),)
612
expected_graph[(file_id, rev4)] = ((file_id, rev2), (file_id, rev3),)
614
self.assertEqual(rev2, tree3.get_file_revision('new_' + name))
615
expected_graph[(file_id, rev4)] = ()
601
616
self.assertFileGraph(expected_graph, tree1, (file_id, rev4))
603
618
def test_last_modified_revision_after_merge_dir_changes(self):
726
741
os.symlink('target', name)
728
743
def make_reference(self, name):
729
tree = self.make_branch_and_tree(name, format='1.9-rich-root')
744
tree = self.make_branch_and_tree(name)
745
if not tree.branch.repository._format.rich_root_data:
746
raise tests.TestNotApplicable(
747
'format does not support rich roots')
730
748
tree.commit('foo')