~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/intertree_implementations/test_compare.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2007-05-01 18:27:14 UTC
  • mfrom: (2472.2.2 dirstate_fixes)
  • Revision ID: pqm@pqm.ubuntu.com-20070501182714-71xp33bziogu3qu0
(John Arbash Meinel) Fix bug #111127 and bug #111288. WT4._iter_changes had difficulties with directories with '-', and filesystem renames.

Show diffs side-by-side

added added

removed removed

Lines of Context:
867
867
            specific_files=specific_files, require_versioned=False,
868
868
            want_unversioned=True))
869
869
 
 
870
    def test_similar_filenames(self):
 
871
        """Test when we have a few files with similar names."""
 
872
        tree1 = self.make_branch_and_tree('tree1')
 
873
        tree2 = self.make_branch_and_tree('tree2')
 
874
        tree2.set_root_id(tree1.get_root_id())
 
875
 
 
876
        # The trees are actually identical, but they happen to contain
 
877
        # similarly named files.
 
878
        self.build_tree(['tree1/a/',
 
879
                         'tree1/a/b/',
 
880
                         'tree1/a/b/c/',
 
881
                         'tree1/a/b/c/d/',
 
882
                         'tree1/a-c/',
 
883
                         'tree1/a-c/e/',
 
884
                         'tree2/a/',
 
885
                         'tree2/a/b/',
 
886
                         'tree2/a/b/c/',
 
887
                         'tree2/a/b/c/d/',
 
888
                         'tree2/a-c/',
 
889
                         'tree2/a-c/e/',
 
890
                        ])
 
891
        tree1.add(['a', 'a/b', 'a/b/c', 'a/b/c/d', 'a-c', 'a-c/e'],
 
892
                  ['a-id', 'b-id', 'c-id', 'd-id', 'a-c-id', 'e-id'])
 
893
        tree2.add(['a', 'a/b', 'a/b/c', 'a/b/c/d', 'a-c', 'a-c/e'],
 
894
                  ['a-id', 'b-id', 'c-id', 'd-id', 'a-c-id', 'e-id'])
 
895
 
 
896
        tree1, tree2 = self.mutable_trees_to_locked_test_trees(tree1, tree2)
 
897
 
 
898
        self.assertEqual([], self.do_iter_changes(tree1, tree2,
 
899
                                                  want_unversioned=True))
 
900
        expected = sorted([
 
901
            self.unchanged(tree2, tree2.get_root_id()),
 
902
            self.unchanged(tree2, 'a-id'),
 
903
            self.unchanged(tree2, 'b-id'),
 
904
            self.unchanged(tree2, 'c-id'),
 
905
            self.unchanged(tree2, 'd-id'),
 
906
            self.unchanged(tree2, 'a-c-id'),
 
907
            self.unchanged(tree2, 'e-id'),
 
908
            ])
 
909
        self.assertEqual(expected,
 
910
                         self.do_iter_changes(tree1, tree2,
 
911
                                              want_unversioned=True,
 
912
                                              include_unchanged=True))
 
913
 
 
914
 
870
915
    def test_unversioned_subtree_only_emits_root(self):
871
916
        tree1 = self.make_branch_and_tree('tree1')
872
917
        tree2 = self.make_to_branch_and_tree('tree2')
1354
1399
        self.assertEqual(expected,
1355
1400
                         self.do_iter_changes(tree1, tree2,
1356
1401
                                              want_unversioned=True))
 
1402
 
 
1403
    def test_renamed_and_unknown(self):
 
1404
        """A file was moved on the filesystem, but not in bzr."""
 
1405
        tree1 = self.make_branch_and_tree('tree1')
 
1406
        tree2 = self.make_to_branch_and_tree('tree2')
 
1407
        root_id = tree1.get_root_id()
 
1408
        tree2.set_root_id(root_id)
 
1409
 
 
1410
        # The final changes are:
 
1411
        # bzr add a b
 
1412
        # mv a a2
 
1413
 
 
1414
        self.build_tree_contents([
 
1415
            ('tree1/a', 'a contents\n'),
 
1416
            ('tree1/b', 'b contents\n'),
 
1417
            ('tree2/a', 'a contents\n'),
 
1418
            ('tree2/b', 'b contents\n'),
 
1419
            ])
 
1420
        tree1.add(['a', 'b'], ['a-id', 'b-id'])
 
1421
        tree2.add(['a', 'b'], ['a-id', 'b-id'])
 
1422
        os.rename('tree2/a', 'tree2/a2')
 
1423
 
 
1424
        tree1, tree2 = self.mutable_trees_to_locked_test_trees(tree1, tree2)
 
1425
 
 
1426
        expected = sorted([
 
1427
            self.missing('a-id', 'a', 'a', tree2.get_root_id(), 'file'),
 
1428
            self.unversioned(tree2, 'a2'),
 
1429
            ])
 
1430
        self.assertEqual(expected,
 
1431
                         self.do_iter_changes(tree1, tree2,
 
1432
                                              want_unversioned=True))