~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/per_repository/test_commit_builder.py

  • Committer: Robert Collins
  • Date: 2009-03-23 03:07:13 UTC
  • mto: This revision was merged to the branch mainline in revision 4183.
  • Revision ID: robertc@robertcollins.net-20090323030713-o0xmije7v3w07ujy
Fix bug with merges of new files, increasing test coverage to ensure its kept fixed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
892
892
 
893
893
    def _commit_sprout_rename_merge(self, tree1, name, expect_fs_hash=False,
894
894
        mini_commit=None):
 
895
        """Do a rename in both trees."""
895
896
        rev1, tree2 = self._commit_sprout(tree1, name)
896
897
        # change both sides equally
897
898
        rev2 = self._rename_in_tree(tree1, name)
972
973
        expected_graph[(file_id, rev2)] = ((file_id, rev1),)
973
974
        self.assertFileGraph(expected_graph, tree1, (file_id, rev2))
974
975
 
975
 
    def test_last_modified_revision_after_converged_merge_dir_changes(self):
976
 
        # merge a dir changes the last modified.
 
976
    def _commit_sprout_make_merge(self, tree1, make, mini_commit=None):
 
977
        # Make a merge which incorporates the addition of a new object to
 
978
        # another branch. The per-file graph shows no additional change
 
979
        # in the merge because its a straight line.
 
980
        rev1 = tree1.commit('')
 
981
        tree2 = tree1.bzrdir.sprout('t2').open_workingtree()
 
982
        # make and commit on the other side to merge back
 
983
        make('t2/name')
 
984
        file_id = 'nameid'
 
985
        tree2.add(['name'], [file_id])
 
986
        rev2 = tree2.commit('')
 
987
        tree1.merge_from_branch(tree2.branch)
 
988
        if mini_commit is None:
 
989
            mini_commit = self.mini_commit
 
990
        rev3 = mini_commit(tree1, None, 'name', False)
 
991
        tree3, = self._get_revtrees(tree1, [rev2])
 
992
        # in rev2, name should be only changed in rev2
 
993
        self.assertEqual(rev2, tree3.inventory[file_id].revision)
 
994
        expected_graph = {}
 
995
        expected_graph[(file_id, rev2)] = ()
 
996
        self.assertFileGraph(expected_graph, tree1, (file_id, rev2))
 
997
 
 
998
    def test_last_modified_revision_after_converged_merge_dir_unchanged(self):
 
999
        # merge a dir that changed preserves the last modified.
977
1000
        tree1 = self.make_branch_and_tree('t1')
978
1001
        self.build_tree(['t1/dir/'])
979
1002
        self._commit_sprout_rename_merge_converged(tree1, 'dir')
980
1003
 
981
 
    def test_last_modified_revision_after_converged_merge_dir_changes_ric(self):
982
 
        # merge a dir changes the last modified.
 
1004
    def test_last_modified_revision_after_converged_merge_dir_unchanged_ric(self):
 
1005
        # merge a dir that changed preserves the last modified.
983
1006
        tree1 = self.make_branch_and_tree('t1')
984
1007
        self.build_tree(['t1/dir/'])
985
1008
        self._commit_sprout_rename_merge_converged(tree1, 'dir',
986
1009
            mini_commit=self.mini_commit_record_iter_changes)
987
1010
 
988
 
    def test_last_modified_revision_after_converged_merge_file_changes(self):
989
 
        # merge a file changes the last modified.
 
1011
    def test_last_modified_revision_after_converged_merge_file_unchanged(self):
 
1012
        # merge a file that changed preserves the last modified.
990
1013
        tree1 = self.make_branch_and_tree('t1')
991
1014
        self.build_tree(['t1/file'])
992
1015
        self._commit_sprout_rename_merge_converged(tree1, 'file')
993
1016
 
994
 
    def test_last_modified_revision_after_converged_merge_file_changes_ric(self):
995
 
        # merge a file changes the last modified.
 
1017
    def test_last_modified_revision_after_converged_merge_file_unchanged_ric(self):
 
1018
        # merge a file that changed preserves the last modified.
996
1019
        tree1 = self.make_branch_and_tree('t1')
997
1020
        self.build_tree(['t1/file'])
998
1021
        self._commit_sprout_rename_merge_converged(tree1, 'file',
999
1022
            mini_commit=self.mini_commit_record_iter_changes)
1000
1023
 
1001
 
    def test_last_modified_revision_after_converged_merge_link_changes(self):
1002
 
        # merge a link changes the last modified.
 
1024
    def test_last_modified_revision_after_converged_merge_link_unchanged(self):
 
1025
        # merge a link that changed preserves the last modified.
1003
1026
        self.requireFeature(tests.SymlinkFeature)
1004
1027
        tree1 = self.make_branch_and_tree('t1')
1005
1028
        os.symlink('target', 't1/link')
1006
1029
        self._commit_sprout_rename_merge_converged(tree1, 'link')
1007
1030
 
1008
 
    def test_last_modified_revision_after_converged_merge_link_changes_ric(self):
1009
 
        # merge a link changes the last modified.
 
1031
    def test_last_modified_revision_after_converged_merge_link_unchanged_ric(self):
 
1032
        # merge a link that changed preserves the last modified.
1010
1033
        self.requireFeature(tests.SymlinkFeature)
1011
1034
        tree1 = self.make_branch_and_tree('t1')
1012
1035
        os.symlink('target', 't1/link')
1013
1036
        self._commit_sprout_rename_merge_converged(tree1, 'link',
1014
1037
            mini_commit=self.mini_commit_record_iter_changes)
1015
1038
 
 
1039
    def test_last_modified_revision_after_merge_new_dir_unchanged(self):
 
1040
        # merge a new dir does not change the last modified.
 
1041
        tree1 = self.make_branch_and_tree('t1')
 
1042
        self._commit_sprout_make_merge(tree1, self.make_dir)
 
1043
 
 
1044
    def test_last_modified_revision_after_merge_new_dir_unchanged_ric(self):
 
1045
        # merge a new dir does not change the last modified.
 
1046
        tree1 = self.make_branch_and_tree('t1')
 
1047
        self._commit_sprout_make_merge(tree1, self.make_dir,
 
1048
            mini_commit=self.mini_commit_record_iter_changes)
 
1049
 
 
1050
    def test_last_modified_revision_after_merge_new_file_unchanged(self):
 
1051
        # merge a new file does not change the last modified.
 
1052
        tree1 = self.make_branch_and_tree('t1')
 
1053
        self._commit_sprout_make_merge(tree1, self.make_file)
 
1054
 
 
1055
    def test_last_modified_revision_after_merge_new_file_unchanged_ric(self):
 
1056
        # merge a new file does not change the last modified.
 
1057
        tree1 = self.make_branch_and_tree('t1')
 
1058
        self._commit_sprout_make_merge(tree1, self.make_file,
 
1059
            mini_commit=self.mini_commit_record_iter_changes)
 
1060
 
 
1061
    def test_last_modified_revision_after_merge_new_link_unchanged(self):
 
1062
        # merge a new link does not change the last modified.
 
1063
        tree1 = self.make_branch_and_tree('t1')
 
1064
        self._commit_sprout_make_merge(tree1, self.make_link)
 
1065
 
 
1066
    def test_last_modified_revision_after_merge_new_link_unchanged_ric(self):
 
1067
        # merge a new link does not change the last modified.
 
1068
        tree1 = self.make_branch_and_tree('t1')
 
1069
        self._commit_sprout_make_merge(tree1, self.make_link,
 
1070
            mini_commit=self.mini_commit_record_iter_changes)
 
1071
 
1016
1072
    def make_dir(self, name):
1017
1073
        self.build_tree([name + '/'])
1018
1074