~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

Fix ``bzr log -r`` to support selecting merge revisions.

Show diffs side-by-side

added added

removed removed

Lines of Context:
92
92
        log = self.runbzr("log -r 1..3")[0]
93
93
        self.assertEquals(self.full_log, log)
94
94
 
 
95
    def test_log_reversed_revspecs(self):
 
96
        self._prepare()
 
97
        self.run_bzr_error(('bzr: ERROR: Start revision must be older than '
 
98
                            'the end revision.\n',),
 
99
                           'log', '-r3..1')
 
100
 
95
101
    def test_log_revno_n_path(self):
96
102
        os.mkdir('branch1')
97
103
        os.chdir('branch1')
147
153
        self.runbzr('commit -m merge_branch_1')
148
154
        log = self.runbzr("log -r-1")[0]
149
155
        self.assertContainsRe(log, r'    tags: tag1')
 
156
        log = self.runbzr("log -r3.1.1")[0]
 
157
        self.assertContainsRe(log, r'    tags: tag1')
150
158
 
151
159
 
152
160
class TestLogMerges(ExternalBase):
153
161
 
154
 
    def test_merges_are_indented_by_level(self):
 
162
    def _prepare(self):
155
163
        self.build_tree(['parent/'])
156
164
        self.run_bzr('init', 'parent')
157
165
        self.run_bzr('commit', '-m', 'first post', '--unchanged', 'parent')
165
173
        os.chdir('../parent')
166
174
        self.run_bzr('merge', '../child')
167
175
        self.run_bzr('commit', '-m', 'merge branch 1')
 
176
 
 
177
    def test_merges_are_indented_by_level(self):
 
178
        self._prepare()
168
179
        out,err = self.run_bzr('log')
169
180
        # the log will look something like:
170
181
#        self.assertEqual("""\
177
188
#  merge branch 1
178
189
#    ------------------------------------------------------------
179
190
#    revno: 1.1.2  
180
 
#    merged: foo@example.com-20060328113140-91f43cfb46dc2863
181
191
#    committer: Robert Collins <foo@example.com>
182
192
#    branch nick: child
183
193
#    timestamp: Tue 2006-03-28 22:31:40 +1100
185
195
#      merge branch 2
186
196
#        ------------------------------------------------------------
187
197
#        revno: 1.1.1.1
188
 
#        merged: foo@example.com-20060328113140-1ba24f850a0ef573
189
198
#        committer: Robert Collins <foo@example.com>
190
199
#        branch nick: smallerchild
191
200
#        timestamp: Tue 2006-03-28 22:31:40 +1100
193
202
#          branch 2
194
203
#    ------------------------------------------------------------
195
204
#    revno: 1.1.1
196
 
#    merged: foo@example.com-20060328113140-5749a4757a8ac792
197
205
#    committer: Robert Collins <foo@example.com>
198
206
#    branch nick: child
199
207
#    timestamp: Tue 2006-03-28 22:31:40 +1100
218
226
        self.assertTrue('          branch 2' in out)
219
227
        self.assertTrue('    revno: 1.1.1' in out)
220
228
        self.assertTrue('      branch 1' in out)
221
 
        self.assertTrue('revno: 1' in out)
 
229
        self.assertTrue('revno: 1\n' in out)
222
230
        self.assertTrue('  first post' in out)
223
231
        self.assertEqual('', err)
224
232
 
225
 
 
 
233
    def test_merges_single_merge_rev(self):
 
234
        self._prepare()
 
235
        out,err = self.run_bzr('log', '-r1.1.2')
 
236
        # the log will look something like:
 
237
#        self.assertEqual("""\
 
238
#    ------------------------------------------------------------
 
239
#    revno: 1.1.2  
 
240
#    committer: Robert Collins <foo@example.com>
 
241
#    branch nick: child
 
242
#    timestamp: Tue 2006-03-28 22:31:40 +1100
 
243
#    message:
 
244
#      merge branch 2
 
245
#        ------------------------------------------------------------
 
246
#        revno: 1.1.1.1
 
247
#        committer: Robert Collins <foo@example.com>
 
248
#        branch nick: smallerchild
 
249
#        timestamp: Tue 2006-03-28 22:31:40 +1100
 
250
#        message:
 
251
#          branch 2
 
252
#""", out)
 
253
        # but we dont have a nice pattern matcher hooked up yet, so:
 
254
        # we check for the indenting of the commit message and the 
 
255
        # revision numbers 
 
256
        self.assertTrue('revno: 2' not in out)
 
257
        self.assertTrue('  merge branch 1' not in out)
 
258
        self.assertTrue('    revno: 1.1.2' in out)
 
259
        self.assertTrue('      merge branch 2' in out)
 
260
        self.assertTrue('        revno: 1.1.1.1' in out)
 
261
        self.assertTrue('          branch 2' in out)
 
262
        self.assertTrue('    revno: 1.1.1\n' not in out)
 
263
        self.assertTrue('      branch 1' not in out)
 
264
        self.assertTrue('revno: 1\n' not in out)
 
265
        self.assertTrue('  first post' not in out)
 
266
        self.assertEqual('', err)
 
267
 
 
268
    def test_merges_partial_range(self):
 
269
        self._prepare()
 
270
        out,err = self.run_bzr('log', '-r1.1.1..1.1.2')
 
271
        # the log will look something like:
 
272
#        self.assertEqual("""\
 
273
#    ------------------------------------------------------------
 
274
#    revno: 1.1.2  
 
275
#    committer: Robert Collins <foo@example.com>
 
276
#    branch nick: child
 
277
#    timestamp: Tue 2006-03-28 22:31:40 +1100
 
278
#    message:
 
279
#      merge branch 2
 
280
#        ------------------------------------------------------------
 
281
#        revno: 1.1.1.1
 
282
#        committer: Robert Collins <foo@example.com>
 
283
#        branch nick: smallerchild
 
284
#        timestamp: Tue 2006-03-28 22:31:40 +1100
 
285
#        message:
 
286
#          branch 2
 
287
#    ------------------------------------------------------------
 
288
#    revno: 1.1.1
 
289
#    committer: Robert Collins <foo@example.com>
 
290
#    branch nick: child
 
291
#    timestamp: Tue 2006-03-28 22:31:40 +1100
 
292
#    message:
 
293
#      branch 1
 
294
#""", out)
 
295
        # but we dont have a nice pattern matcher hooked up yet, so:
 
296
        # we check for the indenting of the commit message and the 
 
297
        # revision numbers 
 
298
        self.assertTrue('revno: 2' not in out)
 
299
        self.assertTrue('  merge branch 1' not in out)
 
300
        self.assertTrue('    revno: 1.1.2' in out)
 
301
        self.assertTrue('      merge branch 2' in out)
 
302
        self.assertTrue('        revno: 1.1.1.1' in out)
 
303
        self.assertTrue('          branch 2' in out)
 
304
        self.assertTrue('    revno: 1.1.1' in out)
 
305
        self.assertTrue('      branch 1' in out)
 
306
        self.assertTrue('revno: 1\n' not in out)
 
307
        self.assertTrue('  first post' not in out)
 
308
        self.assertEqual('', err)
 
309
 
 
310
 
226
311
class TestLogEncodings(TestCaseInTempDir):
227
312
 
228
313
    _mu = u'\xb5'
351
436
        os.chdir('parent')
352
437
        self.run_bzr('merge', '../child')
353
438
        self.run_bzr('commit', '-m', 'merge child branch')
354
 
        
 
439
       
355
440
        log = self.run_bzr('log', 'file1')[0]
356
441
        self.assertContainsRe(log, 'revno: 1\n')
357
442
        self.assertNotContainsRe(log, 'revno: 2\n')
370
455
        self.assertContainsRe(log, 'revno: 3\n')
371
456
        self.assertNotContainsRe(log, 'revno: 3.1.1\n')
372
457
        self.assertNotContainsRe(log, 'revno: 4\n')
 
458
        log = self.run_bzr('log', '-r3.1.1', 'file2')[0]
 
459
        self.assertNotContainsRe(log, 'revno: 1\n')
 
460
        self.assertNotContainsRe(log, 'revno: 2\n')
 
461
        self.assertNotContainsRe(log, 'revno: 3\n')
 
462
        self.assertContainsRe(log, 'revno: 3.1.1\n')
 
463
        self.assertNotContainsRe(log, 'revno: 4\n')
 
464
        log = self.run_bzr('log', '-r4', 'file2')[0]
 
465
        self.assertNotContainsRe(log, 'revno: 1\n')
 
466
        self.assertNotContainsRe(log, 'revno: 2\n')
 
467
        self.assertNotContainsRe(log, 'revno: 3\n')
 
468
        self.assertContainsRe(log, 'revno: 3.1.1\n')
 
469
        self.assertContainsRe(log, 'revno: 4\n')
 
470
        log = self.run_bzr('log', '-r3..', 'file2')[0]
 
471
        self.assertNotContainsRe(log, 'revno: 1\n')
 
472
        self.assertNotContainsRe(log, 'revno: 2\n')
 
473
        self.assertNotContainsRe(log, 'revno: 3\n')
 
474
        self.assertContainsRe(log, 'revno: 3.1.1\n')
 
475
        self.assertContainsRe(log, 'revno: 4\n')
 
476
        log = self.run_bzr('log', '-r..3', 'file2')[0]
 
477
        self.assertNotContainsRe(log, 'revno: 1\n')
 
478
        self.assertContainsRe(log, 'revno: 2\n')
 
479
        self.assertNotContainsRe(log, 'revno: 3\n')
 
480
        self.assertNotContainsRe(log, 'revno: 3.1.1\n')
 
481
        self.assertNotContainsRe(log, 'revno: 4\n')