~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2007-04-26 21:11:03 UTC
  • mfrom: (2447.1.7 bundle_empty_properties)
  • Revision ID: pqm@pqm.ubuntu.com-20070426211103-h84prqh7a4ad3ez2
(John Arbash Meinel) Fix bug #109613 by teaching Bundle how to properly read/write revision properties with no value.

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
 
30
30
    def _prepare(self, format=None):
31
31
        if format:
32
 
            self.run_bzr(["init", "--format="+format])
 
32
            self.runbzr("init --format="+format)
33
33
        else:
34
 
            self.run_bzr("init")
 
34
            self.runbzr("init")
35
35
        self.build_tree(['hello.txt', 'goodbye.txt', 'meep.txt'])
36
 
        self.run_bzr("add hello.txt")
37
 
        self.run_bzr("commit -m message1 hello.txt")
38
 
        self.run_bzr("add goodbye.txt")
39
 
        self.run_bzr("commit -m message2 goodbye.txt")
40
 
        self.run_bzr("add meep.txt")
41
 
        self.run_bzr("commit -m message3 meep.txt")
42
 
        self.full_log = self.run_bzr("log")[0]
 
36
        self.runbzr("add hello.txt")
 
37
        self.runbzr("commit -m message1 hello.txt")
 
38
        self.runbzr("add goodbye.txt")
 
39
        self.runbzr("commit -m message2 goodbye.txt")
 
40
        self.runbzr("add meep.txt")
 
41
        self.runbzr("commit -m message3 meep.txt")
 
42
        self.full_log = self.runbzr("log")[0]
43
43
 
44
44
    def test_log_null_end_revspec(self):
45
45
        self._prepare()
50
50
        self.assertTrue('message:\n  message2\n' in self.full_log)
51
51
        self.assertTrue('message:\n  message3\n' in self.full_log)
52
52
 
53
 
        log = self.run_bzr("log -r 1..")[0]
54
 
        self.assertEqualDiff(log, self.full_log)
 
53
        log = self.runbzr("log -r 1..")[0]
 
54
        self.assertEquals(log, self.full_log)
55
55
 
56
56
    def test_log_null_begin_revspec(self):
57
57
        self._prepare()
58
 
        log = self.run_bzr("log -r ..3")[0]
59
 
        self.assertEqualDiff(self.full_log, log)
 
58
        log = self.runbzr("log -r ..3")[0]
 
59
        self.assertEquals(self.full_log, log)
60
60
 
61
61
    def test_log_null_both_revspecs(self):
62
62
        self._prepare()
63
 
        log = self.run_bzr("log -r ..")[0]
 
63
        log = self.runbzr("log -r ..")[0]
64
64
        self.assertEquals(self.full_log, log)
65
 
        self.assertEqualDiff(self.full_log, log)
66
65
 
67
66
    def test_log_negative_begin_revspec_full_log(self):
68
67
        self._prepare()
69
 
        log = self.run_bzr("log -r -3..")[0]
70
 
        self.assertEqualDiff(self.full_log, log)
 
68
        log = self.runbzr("log -r -3..")[0]
 
69
        self.assertEquals(self.full_log, log)
71
70
 
72
71
    def test_log_negative_both_revspec_full_log(self):
73
72
        self._prepare()
74
 
        log = self.run_bzr("log -r -3..-1")[0]
75
 
        self.assertEqualDiff(self.full_log, log)
 
73
        log = self.runbzr("log -r -3..-1")[0]
 
74
        self.assertEquals(self.full_log, log)
76
75
 
77
76
    def test_log_negative_both_revspec_partial(self):
78
77
        self._prepare()
79
 
        log = self.run_bzr("log -r -3..-2")[0]
 
78
        log = self.runbzr("log -r -3..-2")[0]
80
79
        self.assertTrue('revno: 1\n' in log)
81
80
        self.assertTrue('revno: 2\n' in log)
82
81
        self.assertTrue('revno: 3\n' not in log)
83
82
 
84
83
    def test_log_negative_begin_revspec(self):
85
84
        self._prepare()
86
 
        log = self.run_bzr("log -r -2..")[0]
 
85
        log = self.runbzr("log -r -2..")[0]
87
86
        self.assertTrue('revno: 1\n' not in log)
88
87
        self.assertTrue('revno: 2\n' in log)
89
88
        self.assertTrue('revno: 3\n' in log)
90
89
 
91
90
    def test_log_postive_revspecs(self):
92
91
        self._prepare()
93
 
        log = self.run_bzr("log -r 1..3")[0]
94
 
        self.assertEqualDiff(self.full_log, log)
 
92
        log = self.runbzr("log -r 1..3")[0]
 
93
        self.assertEquals(self.full_log, log)
95
94
 
96
95
    def test_log_revno_n_path(self):
97
96
        os.mkdir('branch1')
102
101
        os.chdir('branch2')
103
102
        self._prepare()
104
103
        os.chdir('..')
105
 
        log = self.run_bzr("log -r revno:2:branch1..revno:3:branch2",
 
104
        log = self.runbzr("log -r revno:2:branch1..revno:3:branch2",
106
105
                          retcode=3)[0]
107
 
        log = self.run_bzr("log -r revno:1:branch2..revno:3:branch2")[0]
108
 
        self.assertEqualDiff(self.full_log, log)
109
 
        log = self.run_bzr("log -r revno:1:branch2")[0]
 
106
        log = self.runbzr("log -r revno:1:branch2..revno:3:branch2")[0]
 
107
        self.assertEquals(self.full_log, log)
 
108
        log = self.runbzr("log -r revno:1:branch2")[0]
110
109
        self.assertTrue('revno: 1\n' in log)
111
110
        self.assertTrue('revno: 2\n' not in log)
112
111
        self.assertTrue('branch nick: branch2\n' in log)
122
121
 
123
122
    def test_log_with_tags(self):
124
123
        self._prepare(format='dirstate-tags')
125
 
        self.run_bzr('tag -r1 tag1')
126
 
        self.run_bzr('tag -r1 tag1.1')
127
 
        self.run_bzr('tag tag3')
 
124
        self.runbzr('tag -r1 tag1')
 
125
        self.runbzr('tag -r1 tag1.1')
 
126
        self.runbzr('tag tag3')
128
127
        
129
 
        log = self.run_bzr("log -r-1")[0]
 
128
        log = self.runbzr("log -r-1")[0]
130
129
        self.assertTrue('tags: tag3' in log)
131
130
 
132
 
        log = self.run_bzr("log -r1")[0]
 
131
        log = self.runbzr("log -r1")[0]
133
132
        # I guess that we can't know the order of tags in the output
134
133
        # since dicts are unordered, need to check both possibilities
135
134
        self.assertContainsRe(log, r'tags: (tag1, tag1\.1|tag1\.1, tag1)')
139
138
        os.chdir('branch1')
140
139
        self._prepare(format='dirstate-tags')
141
140
        os.chdir('..')
142
 
        self.run_bzr('branch branch1 branch2')
 
141
        self.runbzr('branch branch1 branch2')
143
142
        os.chdir('branch1')
144
 
        self.run_bzr('commit -m foobar --unchanged')
145
 
        self.run_bzr('tag tag1')
 
143
        self.runbzr('commit -m foobar --unchanged')
 
144
        self.runbzr('tag tag1')
146
145
        os.chdir('../branch2')
147
 
        self.run_bzr('merge ../branch1')
148
 
        self.run_bzr('commit -m merge_branch_1')
149
 
        log = self.run_bzr("log -r-1")[0]
 
146
        self.runbzr('merge ../branch1')
 
147
        self.runbzr('commit -m merge_branch_1')
 
148
        log = self.runbzr("log -r-1")[0]
150
149
        self.assertContainsRe(log, r'    tags: tag1')
151
150
 
152
 
    def test_log_limit(self):
153
 
        self._prepare()
154
 
        log = self.run_bzr("log --limit 2")[0]
155
 
        self.assertTrue('revno: 1\n' not in log)
156
 
        self.assertTrue('revno: 2\n' in log)
157
 
        self.assertTrue('revno: 3\n' in log)
 
151
 
 
152
class TestLogMerges(ExternalBase):
 
153
 
 
154
    def test_merges_are_indented_by_level(self):
 
155
        self.build_tree(['parent/'])
 
156
        self.run_bzr('init', 'parent')
 
157
        self.run_bzr('commit', '-m', 'first post', '--unchanged', 'parent')
 
158
        self.run_bzr('branch', 'parent', 'child')
 
159
        self.run_bzr('commit', '-m', 'branch 1', '--unchanged', 'child')
 
160
        self.run_bzr('branch', 'child', 'smallerchild')
 
161
        self.run_bzr('commit', '-m', 'branch 2', '--unchanged', 'smallerchild')
 
162
        os.chdir('child')
 
163
        self.run_bzr('merge', '../smallerchild')
 
164
        self.run_bzr('commit', '-m', 'merge branch 2')
 
165
        os.chdir('../parent')
 
166
        self.run_bzr('merge', '../child')
 
167
        self.run_bzr('commit', '-m', 'merge branch 1')
 
168
        out,err = self.run_bzr('log')
 
169
        # the log will look something like:
 
170
#        self.assertEqual("""\
 
171
#------------------------------------------------------------
 
172
#revno: 2
 
173
#committer: Robert Collins <foo@example.com>
 
174
#branch nick: parent
 
175
#timestamp: Tue 2006-03-28 22:31:40 +1100
 
176
#message:
 
177
#  merge branch 1
 
178
#    ------------------------------------------------------------
 
179
#    revno: 1.1.2  
 
180
#    merged: foo@example.com-20060328113140-91f43cfb46dc2863
 
181
#    committer: Robert Collins <foo@example.com>
 
182
#    branch nick: child
 
183
#    timestamp: Tue 2006-03-28 22:31:40 +1100
 
184
#    message:
 
185
#      merge branch 2
 
186
#        ------------------------------------------------------------
 
187
#        revno: 1.1.1.1
 
188
#        merged: foo@example.com-20060328113140-1ba24f850a0ef573
 
189
#        committer: Robert Collins <foo@example.com>
 
190
#        branch nick: smallerchild
 
191
#        timestamp: Tue 2006-03-28 22:31:40 +1100
 
192
#        message:
 
193
#          branch 2
 
194
#    ------------------------------------------------------------
 
195
#    revno: 1.1.1
 
196
#    merged: foo@example.com-20060328113140-5749a4757a8ac792
 
197
#    committer: Robert Collins <foo@example.com>
 
198
#    branch nick: child
 
199
#    timestamp: Tue 2006-03-28 22:31:40 +1100
 
200
#    message:
 
201
#      branch 1
 
202
#------------------------------------------------------------
 
203
#revno: 1
 
204
#committer: Robert Collins <foo@example.com>
 
205
#branch nick: parent
 
206
#timestamp: Tue 2006-03-28 22:31:39 +1100
 
207
#message:
 
208
#  first post
 
209
#""", out)
 
210
        # but we dont have a nice pattern matcher hooked up yet, so:
 
211
        # we check for the indenting of the commit message and the 
 
212
        # revision numbers 
 
213
        self.assertTrue('revno: 2' in out)
 
214
        self.assertTrue('  merge branch 1' in out)
 
215
        self.assertTrue('    revno: 1.1.2' in out)
 
216
        self.assertTrue('      merge branch 2' in out)
 
217
        self.assertTrue('        revno: 1.1.1.1' in out)
 
218
        self.assertTrue('          branch 2' in out)
 
219
        self.assertTrue('    revno: 1.1.1' in out)
 
220
        self.assertTrue('      branch 1' in out)
 
221
        self.assertTrue('revno: 1' in out)
 
222
        self.assertTrue('  first post' in out)
 
223
        self.assertEqual('', err)
158
224
 
159
225
 
160
226
class TestLogEncodings(TestCaseInTempDir):