/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/tests/blackbox/test_log.py

  • Committer: Jelmer Vernooij
  • Date: 2019-05-29 03:22:34 UTC
  • mfrom: (7303 work)
  • mto: This revision was merged to the branch mainline in revision 7306.
  • Revision ID: jelmer@jelmer.uk-20190529032234-mt3fuws8gq03tapi
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
    def make_merged_branch(self, path='.', format=None):
62
62
        tree = self.make_linear_branch(path, format)
63
63
        tree2 = tree.controldir.sprout('tree2',
64
 
            revision_id=tree.branch.get_rev_id(1)).open_workingtree()
 
64
                                       revision_id=tree.branch.get_rev_id(1)).open_workingtree()
65
65
        tree2.commit(message='tree2 message2')
66
66
        tree2.commit(message='tree2 message3')
67
67
        tree.merge_from_branch(tree2.branch)
74
74
    def setUp(self):
75
75
        super(TestLogWithLogCatcher, self).setUp()
76
76
        # Capture log formatter creations
 
77
 
77
78
        class MyLogFormatter(test_log.LogCatcher):
78
79
 
79
80
            def __new__(klass, *args, **kwargs):
84
85
        self.addCleanup(setattr, MyLogFormatter, "__new__", None)
85
86
 
86
87
        def getme(branch):
87
 
                # Always return our own log formatter class hijacking the
88
 
                # default behavior (which requires setting up a config
89
 
                # variable)
 
88
            # Always return our own log formatter class hijacking the
 
89
            # default behavior (which requires setting up a config
 
90
            # variable)
90
91
            return MyLogFormatter
91
92
        self.overrideAttr(log.log_formatter_registry, 'get_default', getme)
92
93
 
103
104
                         [r.revno for r in self.get_captured_revisions()])
104
105
 
105
106
    def assertLogRevnosAndDepths(self, args, expected_revnos_and_depths,
106
 
                                working_dir='.'):
 
107
                                 working_dir='.'):
107
108
        self.run_bzr(['log'] + args, working_dir=working_dir)
108
109
        self.assertEqual(expected_revnos_and_depths,
109
110
                         [(r.revno, r.merge_depth)
110
 
                           for r in self.get_captured_revisions()])
 
111
                          for r in self.get_captured_revisions()])
111
112
 
112
113
 
113
114
class TestLogRevSpecs(TestLogWithLogCatcher):
368
369
        self.make_minimal_branch()
369
370
        self.run_bzr_error(["brz: ERROR: Requested revision: '123.123' "
370
371
                            "does not exist in branch:"],
371
 
                           ['log',  '-r123.123'])
 
372
                           ['log', '-r123.123'])
372
373
 
373
374
    def test_log_change_nonexistent_revno(self):
374
375
        self.make_minimal_branch()
375
376
        self.run_bzr_error(["brz: ERROR: Requested revision: '1234' "
376
377
                            "does not exist in branch:"],
377
 
                           ['log',  '-c1234'])
 
378
                           ['log', '-c1234'])
378
379
 
379
380
    def test_log_change_nonexistent_dotted_revno(self):
380
381
        self.make_minimal_branch()
444
445
                           ['log', '--exclude-common-ancestry',
445
446
                            '-r1.1.1..1.1.1'])
446
447
 
 
448
 
447
449
class TestLogTags(TestLog):
448
450
 
449
451
    def test_log_with_tags(self):
465
467
        branch1_tree = self.make_linear_branch('branch1',
466
468
                                               format='dirstate-tags')
467
469
        branch1 = branch1_tree.branch
468
 
        branch2_tree = branch1_tree.controldir.sprout('branch2').open_workingtree()
 
470
        branch2_tree = branch1_tree.controldir.sprout(
 
471
            'branch2').open_workingtree()
469
472
        branch1_tree.commit(message='foobar', allow_pointless=True)
470
473
        branch1.tags.set_tag('tag1', branch1.last_revision())
471
474
        # tags don't propagate if we don't merge
559
562
        self.assertEqual([('2', 0), ('1.1.2', 1), ('1.2.1', 2), ('1.1.1', 1),
560
563
                          ('1', 0)],
561
564
                         [(r.revno, r.merge_depth)
562
 
                            for r in self.get_captured_revisions()])
 
565
                          for r in self.get_captured_revisions()])
563
566
 
564
567
    def test_force_merge_revisions_off(self):
565
568
        self.assertLogRevnos(['-n1'], ['2', '1'], working_dir='level0')
588
591
 
589
592
    def test_merges_partial_range(self):
590
593
        self.assertLogRevnosAndDepths(
591
 
                ['-n0', '-r1.1.1..1.1.2'],
592
 
                [('1.1.2', 0), ('1.2.1', 1), ('1.1.1', 0)],
593
 
                working_dir='level0')
 
594
            ['-n0', '-r1.1.1..1.1.2'],
 
595
            [('1.1.2', 0), ('1.2.1', 1), ('1.1.1', 0)],
 
596
            working_dir='level0')
594
597
 
595
598
    def test_merges_partial_range_ignore_before_lower_bound(self):
596
599
        """Dont show revisions before the lower bound's merged revs"""
597
600
        self.assertLogRevnosAndDepths(
598
 
                ['-n0', '-r1.1.2..2'],
599
 
                [('2', 0), ('1.1.2', 1), ('1.2.1', 2)],
600
 
                working_dir='level0')
 
601
            ['-n0', '-r1.1.2..2'],
 
602
            [('2', 0), ('1.1.2', 1), ('1.2.1', 2)],
 
603
            working_dir='level0')
601
604
 
602
605
    def test_omit_merges_with_sidelines(self):
603
606
        self.assertLogRevnos(['--omit-merges', '-n0'], ['1.2.1', '1.1.1', '1'],
670
673
"""
671
674
 
672
675
    def assertLogRevnosAndDiff(self, args, expected,
673
 
                            working_dir='.'):
 
676
                               working_dir='.'):
674
677
        self.run_bzr(['log', '-p'] + args, working_dir=working_dir)
675
678
        expected_revnos_and_depths = [
676
679
            (revno, depth) for revno, depth, diff in expected]
677
680
        # Check the revnos and depths first to make debugging easier
678
681
        self.assertEqual(expected_revnos_and_depths,
679
682
                         [(r.revno, r.merge_depth)
680
 
                           for r in self.get_captured_revisions()])
 
683
                          for r in self.get_captured_revisions()])
681
684
        # Now check the diffs, adding the revno  in case of failure
682
685
        fmt = 'In revno %s\n%s'
683
686
        for expected_rev, actual_rev in zip(expected,
692
695
            ['-n0'],
693
696
            [('2', 0, self._diff_file2_revno2()),
694
697
             ('1.1.1', 1, self._diff_file2_revno1_1_1()),
695
 
             ('1', 0, self._diff_file1_revno1()
696
 
              + self._diff_file2_revno1())],
 
698
             ('1', 0, self._diff_file1_revno1() +
 
699
              self._diff_file2_revno1())],
697
700
            working_dir='level0')
698
701
 
699
 
 
700
702
    def test_log_diff_file1(self):
701
703
        self.assertLogRevnosAndDiff(['-n0', 'file1'],
702
704
                                    [('1', 0, self._diff_file1_revno1())],
742
744
        'utf-8',
743
745
        'latin-1',
744
746
        'iso-8859-1',
745
 
        'cp437', # Common windows encoding
746
 
        'cp1251', # Russian windows encoding
747
 
        'cp1258', # Common windows encoding
 
747
        'cp437',  # Common windows encoding
 
748
        'cp1251',  # Russian windows encoding
 
749
        'cp1258',  # Common windows encoding
748
750
    ]
749
751
    # Encodings which cannot encode mu
750
752
    bad_encodings = [
768
770
        brz = self.run_bzr
769
771
        if fail:
770
772
            self.assertRaises(UnicodeEncodeError,
771
 
                self._mu.encode, encoding)
 
773
                              self._mu.encode, encoding)
772
774
            encoded_msg = self._message.encode(encoding, 'replace')
773
775
        else:
774
776
            encoded_msg = self._message.encode(encoding)
1008
1010
        self.assertEqual(["2", "1"],
1009
1011
                         [r.revno for r in self.get_captured_revisions()])
1010
1012
        self.assertEqual("brz: ERROR: Further revision history missing.\n",
1011
 
                stderr)
 
1013
                         stderr)
1012
1014
 
1013
1015
    def test_log_range_open_end(self):
1014
1016
        self.assertLogRevnos(["-r1.."], ["2", "1"])
1021
1023
        self.build_tree(
1022
1024
            ['/hello.txt', '/goodbye.txt'])
1023
1025
        tree.add('hello.txt')
1024
 
        tree.commit(message='message1', committer='committer1', authors=['author1'])
 
1026
        tree.commit(message='message1', committer='committer1',
 
1027
                    authors=['author1'])
1025
1028
        tree.add('goodbye.txt')
1026
 
        tree.commit(message='message2', committer='committer2', authors=['author2'])
 
1029
        tree.commit(message='message2', committer='committer2',
 
1030
                    authors=['author2'])
1027
1031
 
1028
1032
    def test_message(self):
1029
1033
        self.prepare_tree()
1034
1038
        self.assertLogRevnos(["--match-message", "message1"], ["1"])
1035
1039
        self.assertLogRevnos(["--match-message", "message2"], ["2"])
1036
1040
        self.assertLogRevnos(["--match-message", "message"], ["2", "1"])
1037
 
        self.assertLogRevnos(["--match-message", "message1", 
 
1041
        self.assertLogRevnos(["--match-message", "message1",
1038
1042
                              "--match-message", "message2"], ["2", "1"])
1039
1043
        self.assertLogRevnos(["--message", "message1"], ["1"])
1040
1044
        self.assertLogRevnos(["--message", "message2"], ["2"])
1041
1045
        self.assertLogRevnos(["--message", "message"], ["2", "1"])
1042
 
        self.assertLogRevnos(["--match-message", "message1", 
 
1046
        self.assertLogRevnos(["--match-message", "message1",
1043
1047
                              "--message", "message2"], ["2", "1"])
1044
 
        self.assertLogRevnos(["--message", "message1", 
 
1048
        self.assertLogRevnos(["--message", "message1",
1045
1049
                              "--match-message", "message2"], ["2", "1"])
1046
1050
 
1047
1051
    def test_committer(self):
1049
1053
        self.assertLogRevnos(["-m", "committer1"], ["1"])
1050
1054
        self.assertLogRevnos(["-m", "committer2"], ["2"])
1051
1055
        self.assertLogRevnos(["-m", "committer"], ["2", "1"])
1052
 
        self.assertLogRevnos(["-m", "committer1", "-m", "committer2"], 
 
1056
        self.assertLogRevnos(["-m", "committer1", "-m", "committer2"],
1053
1057
                             ["2", "1"])
1054
1058
        self.assertLogRevnos(["--match-committer", "committer1"], ["1"])
1055
1059
        self.assertLogRevnos(["--match-committer", "committer2"], ["2"])
1056
1060
        self.assertLogRevnos(["--match-committer", "committer"], ["2", "1"])
1057
 
        self.assertLogRevnos(["--match-committer", "committer1", 
 
1061
        self.assertLogRevnos(["--match-committer", "committer1",
1058
1062
                              "--match-committer", "committer2"], ["2", "1"])
1059
1063
 
1060
1064
    def test_author(self):
1062
1066
        self.assertLogRevnos(["-m", "author1"], ["1"])
1063
1067
        self.assertLogRevnos(["-m", "author2"], ["2"])
1064
1068
        self.assertLogRevnos(["-m", "author"], ["2", "1"])
1065
 
        self.assertLogRevnos(["-m", "author1", "-m", "author2"], 
 
1069
        self.assertLogRevnos(["-m", "author1", "-m", "author2"],
1066
1070
                             ["2", "1"])
1067
1071
        self.assertLogRevnos(["--match-author", "author1"], ["1"])
1068
1072
        self.assertLogRevnos(["--match-author", "author2"], ["2"])
1069
1073
        self.assertLogRevnos(["--match-author", "author"], ["2", "1"])
1070
 
        self.assertLogRevnos(["--match-author", "author1", 
 
1074
        self.assertLogRevnos(["--match-author", "author1",
1071
1075
                              "--match-author", "author2"], ["2", "1"])
1072
1076
 
1073
1077