51
45
tree.commit(message='message2')
52
46
tree.add('meep.txt')
53
47
tree.commit(message='message3')
56
def make_merged_branch(self, path='.', format=None):
57
tree = self.make_linear_branch(path, format)
58
tree2 = tree.bzrdir.sprout('tree2',
59
revision_id=tree.branch.get_rev_id(1)).open_workingtree()
60
tree2.commit(message='tree2 message2')
61
tree2.commit(message='tree2 message3')
62
tree.merge_from_branch(tree2.branch)
63
tree.commit(message='merge')
66
def assertRevnos(self, log, must_have=(), must_not_have=()):
67
"""Check if revnos are in or not in the log output"""
68
for revno in must_have:
69
self.assertTrue(('revno: %s\n' % revno) in log,
70
'Does not contain expected revno %s' % revno)
71
for revno in must_not_have:
72
self.assertFalse(('revno: %s\n' % revno) in log,
73
'Contains unexpected revno %s' % revno)
75
def commit_options(self):
76
"""Use some mostly fixed values for commits to simplify tests.
78
Tests can use this function to get some commit attributes. The time
79
stamp is incremented at each commit.
81
self.timestamp += 1 # 1 second between each commit
82
return dict(committer='Lorem Ipsum <joe@foo.com>',
83
timezone=self.timezone,
84
timestamp=self.timestamp,
87
def check_log(self, expected, args, working_dir='level0'):
88
out, err = self.run_bzr(['log', '--timezone', 'utc'] + args,
89
working_dir=working_dir)
90
self.assertEqual('', err)
91
self.assertEqualDiff(expected, test_log.normalize_log(out))
94
class TestLogRevSpecs(TestLog):
48
self.full_log = self.run_bzr(["log", path])[0]
96
51
def test_log_null_end_revspec(self):
97
self.make_linear_branch()
98
log = self.run_bzr(['log'])[0]
99
self.assertTrue('revno: 1\n' in log)
100
self.assertTrue('revno: 2\n' in log)
101
self.assertTrue('revno: 3\n' in log)
102
self.assertTrue('message:\n message1\n' in log)
103
self.assertTrue('message:\n message2\n' in log)
104
self.assertTrue('message:\n message3\n' in log)
53
self.assertTrue('revno: 1\n' in self.full_log)
54
self.assertTrue('revno: 2\n' in self.full_log)
55
self.assertTrue('revno: 3\n' in self.full_log)
56
self.assertTrue('message:\n message1\n' in self.full_log)
57
self.assertTrue('message:\n message2\n' in self.full_log)
58
self.assertTrue('message:\n message3\n' in self.full_log)
106
full_log = self.run_bzr(['log'])[0]
107
60
log = self.run_bzr("log -r 1..")[0]
108
self.assertEqualDiff(log, full_log)
61
self.assertEqualDiff(log, self.full_log)
110
63
def test_log_null_begin_revspec(self):
111
self.make_linear_branch()
112
full_log = self.run_bzr(['log'])[0]
113
65
log = self.run_bzr("log -r ..3")[0]
114
self.assertEqualDiff(full_log, log)
66
self.assertEqualDiff(self.full_log, log)
116
68
def test_log_null_both_revspecs(self):
117
self.make_linear_branch()
118
full_log = self.run_bzr(['log'])[0]
119
70
log = self.run_bzr("log -r ..")[0]
120
self.assertEqualDiff(full_log, log)
71
self.assertEqualDiff(self.full_log, log)
122
73
def test_log_zero_revspec(self):
123
self.make_minimal_branch()
124
self.run_bzr_error(['bzr: ERROR: Logging revision 0 is invalid.'],
75
self.run_bzr_error('bzr: ERROR: Logging revision 0 is invalid.',
127
78
def test_log_zero_begin_revspec(self):
128
self.make_linear_branch()
129
self.run_bzr_error(['bzr: ERROR: Logging revision 0 is invalid.'],
80
self.run_bzr_error('bzr: ERROR: Logging revision 0 is invalid.',
130
81
['log', '-r0..2'])
132
83
def test_log_zero_end_revspec(self):
133
self.make_linear_branch()
134
self.run_bzr_error(['bzr: ERROR: Logging revision 0 is invalid.'],
85
self.run_bzr_error('bzr: ERROR: Logging revision 0 is invalid.',
135
86
['log', '-r-2..0'])
88
def test_log_unsupported_timezone(self):
90
self.run_bzr_error('bzr: ERROR: Unsupported timezone format "foo", '
91
'options are "utc", "original", "local".',
92
['log', '--timezone', 'foo'])
137
94
def test_log_negative_begin_revspec_full_log(self):
138
self.make_linear_branch()
139
full_log = self.run_bzr(['log'])[0]
140
96
log = self.run_bzr("log -r -3..")[0]
141
self.assertEqualDiff(full_log, log)
97
self.assertEqualDiff(self.full_log, log)
143
99
def test_log_negative_both_revspec_full_log(self):
144
self.make_linear_branch()
145
full_log = self.run_bzr(['log'])[0]
146
101
log = self.run_bzr("log -r -3..-1")[0]
147
self.assertEqualDiff(full_log, log)
102
self.assertEqualDiff(self.full_log, log)
149
104
def test_log_negative_both_revspec_partial(self):
150
self.make_linear_branch()
151
106
log = self.run_bzr("log -r -3..-2")[0]
152
107
self.assertTrue('revno: 1\n' in log)
153
108
self.assertTrue('revno: 2\n' in log)
154
109
self.assertTrue('revno: 3\n' not in log)
156
111
def test_log_negative_begin_revspec(self):
157
self.make_linear_branch()
158
113
log = self.run_bzr("log -r -2..")[0]
159
114
self.assertTrue('revno: 1\n' not in log)
160
115
self.assertTrue('revno: 2\n' in log)
161
116
self.assertTrue('revno: 3\n' in log)
163
118
def test_log_positive_revspecs(self):
164
self.make_linear_branch()
165
full_log = self.run_bzr(['log'])[0]
166
120
log = self.run_bzr("log -r 1..3")[0]
167
self.assertEqualDiff(full_log, log)
169
def test_log_dotted_revspecs(self):
170
self.make_merged_branch()
171
log = self.run_bzr("log -n0 -r 1..1.1.1")[0]
172
self.assertRevnos(log, (1, '1.1.1'), (2, 3, '1.1.2', 4))
121
self.assertEqualDiff(self.full_log, log)
174
123
def test_log_reversed_revspecs(self):
175
self.make_linear_branch()
176
125
self.run_bzr_error(('bzr: ERROR: Start revision must be older than '
177
126
'the end revision.\n',),
178
127
['log', '-r3..1'])
180
def test_log_reversed_dotted_revspecs(self):
181
self.make_merged_branch()
182
self.run_bzr_error(('bzr: ERROR: Start revision not found in '
183
'left-hand history of end revision.\n',),
186
129
def test_log_revno_n_path(self):
187
self.make_linear_branch('branch1')
188
self.make_linear_branch('branch2')
190
self.run_bzr("log -r revno:2:branch1..revno:3:branch2", retcode=3)[0]
130
self._prepare(path='branch1')
131
self._prepare(path='branch2')
132
log = self.run_bzr("log -r revno:2:branch1..revno:3:branch2",
192
134
log = self.run_bzr("log -r revno:1:branch2..revno:3:branch2")[0]
193
full_log = self.run_bzr(['log'], working_dir='branch2')[0]
194
self.assertEqualDiff(full_log, log)
135
self.assertEqualDiff(self.full_log, log)
195
136
log = self.run_bzr("log -r revno:1:branch2")[0]
196
137
self.assertTrue('revno: 1\n' in log)
197
138
self.assertTrue('revno: 2\n' not in log)
199
140
self.assertTrue('branch nick: branch1\n' not in log)
201
142
def test_log_nonexistent_revno(self):
202
self.make_minimal_branch()
203
(out, err) = self.run_bzr_error(
204
["bzr: ERROR: Requested revision: '1234' "
205
"does not exist in branch:"],
144
(out, err) = self.run_bzr_error(args="log -r 1234",
145
error_regexes=["bzr: ERROR: Requested revision: '1234' "
146
"does not exist in branch:"])
208
148
def test_log_nonexistent_dotted_revno(self):
209
self.make_minimal_branch()
210
(out, err) = self.run_bzr_error(
211
["bzr: ERROR: Requested revision: '123.123' "
212
"does not exist in branch:"],
213
['log', '-r123.123'])
150
(out, err) = self.run_bzr_error(args="log -r 123.123",
151
error_regexes=["bzr: ERROR: Requested revision: '123.123' "
152
"does not exist in branch:"])
215
154
def test_log_change_revno(self):
216
self.make_linear_branch()
217
156
expected_log = self.run_bzr("log -r 1")[0]
218
157
log = self.run_bzr("log -c 1")[0]
219
158
self.assertEqualDiff(expected_log, log)
221
160
def test_log_change_nonexistent_revno(self):
222
self.make_minimal_branch()
223
(out, err) = self.run_bzr_error(
224
["bzr: ERROR: Requested revision: '1234' "
225
"does not exist in branch:"],
162
(out, err) = self.run_bzr_error(args="log -c 1234",
163
error_regexes=["bzr: ERROR: Requested revision: '1234' "
164
"does not exist in branch:"])
228
166
def test_log_change_nonexistent_dotted_revno(self):
229
self.make_minimal_branch()
230
(out, err) = self.run_bzr_error(
231
["bzr: ERROR: Requested revision: '123.123' "
232
"does not exist in branch:"],
233
['log', '-c123.123'])
168
(out, err) = self.run_bzr_error(args="log -c 123.123",
169
error_regexes=["bzr: ERROR: Requested revision: '123.123' "
170
"does not exist in branch:"])
235
def test_log_change_single_revno_only(self):
236
self.make_minimal_branch()
237
self.run_bzr_error(['bzr: ERROR: Option --change does not'
238
' accept revision ranges'],
172
def test_log_change_single_revno(self):
174
self.run_bzr_error('bzr: ERROR: Option --change does not'
175
' accept revision ranges',
239
176
['log', '--change', '2..3'])
241
178
def test_log_change_incompatible_with_revision(self):
242
self.run_bzr_error(['bzr: ERROR: --revision and --change'
243
' are mutually exclusive'],
180
self.run_bzr_error('bzr: ERROR: --revision and --change'
181
' are mutually exclusive',
244
182
['log', '--change', '2', '--revision', '3'])
246
184
def test_log_nonexistent_file(self):
247
self.make_minimal_branch()
248
185
# files that don't exist in either the basis tree or working tree
249
186
# should give an error
187
wt = self.make_branch_and_tree('.')
250
188
out, err = self.run_bzr('log does-not-exist', retcode=3)
251
self.assertContainsRe(err,
252
'Path unknown at end or start of revision range: '
189
self.assertContainsRe(
190
err, 'Path unknown at end or start of revision range: does-not-exist')
255
192
def test_log_with_tags(self):
256
tree = self.make_linear_branch(format='dirstate-tags')
193
tree = self._prepare(format='dirstate-tags')
257
194
branch = tree.branch
258
195
branch.tags.set_tag('tag1', branch.get_rev_id(1))
259
196
branch.tags.set_tag('tag1.1', branch.get_rev_id(1))
364
294
self.assertUseLongDeltaFormat(['log', '--long', '-vv'])
367
class TestLogMerges(TestLog):
370
super(TestLogMerges, self).setUp()
371
self.make_branches_with_merges()
373
def make_branches_with_merges(self):
374
level0 = self.make_branch_and_tree('level0')
375
level0.commit(message='in branch level0', **self.commit_options())
377
level1 = level0.bzrdir.sprout('level1').open_workingtree()
378
level1.commit(message='in branch level1', **self.commit_options())
380
level2 = level1.bzrdir.sprout('level2').open_workingtree()
381
level2.commit(message='in branch level2', **self.commit_options())
383
level1.merge_from_branch(level2.branch)
384
level1.commit(message='merge branch level2', **self.commit_options())
386
level0.merge_from_branch(level1.branch)
387
level0.commit(message='merge branch level1', **self.commit_options())
297
class TestLogMerges(TestCaseWithoutPropsHandler):
300
parent_tree = self.make_branch_and_tree('parent')
301
parent_tree.commit(message='first post', allow_pointless=True)
302
child_tree = parent_tree.bzrdir.sprout('child').open_workingtree()
303
child_tree.commit(message='branch 1', allow_pointless=True)
305
child_tree.bzrdir.sprout('smallerchild').open_workingtree()
306
smaller_tree.commit(message='branch 2', allow_pointless=True)
307
child_tree.merge_from_branch(smaller_tree.branch)
308
child_tree.commit(message='merge branch 2')
309
parent_tree.merge_from_branch(child_tree.branch)
310
parent_tree.commit(message='merge branch 1')
313
def _prepare_short(self):
314
parent_tree = self.make_branch_and_tree('parent')
315
parent_tree.commit(message='first post',
316
timestamp=1132586700, timezone=36000,
317
committer='Joe Foo <joe@foo.com>')
318
child_tree = parent_tree.bzrdir.sprout('child').open_workingtree()
319
child_tree.commit(message='branch 1',
320
timestamp=1132586800, timezone=36000,
321
committer='Joe Foo <joe@foo.com>')
323
child_tree.bzrdir.sprout('smallerchild').open_workingtree()
324
smaller_tree.commit(message='branch 2',
325
timestamp=1132586900, timezone=36000,
326
committer='Joe Foo <joe@foo.com>')
327
child_tree.merge_from_branch(smaller_tree.branch)
328
child_tree.commit(message='merge branch 2',
329
timestamp=1132587000, timezone=36000,
330
committer='Joe Foo <joe@foo.com>')
331
parent_tree.merge_from_branch(child_tree.branch)
332
parent_tree.commit(message='merge branch 1',
333
timestamp=1132587100, timezone=36000,
334
committer='Joe Foo <joe@foo.com>')
389
337
def test_merges_are_indented_by_level(self):
339
out,err = self.run_bzr('log -n0')
340
self.assertEqual('', err)
341
log = normalize_log(out)
342
self.assertEqualDiff(log, """\
391
343
------------------------------------------------------------
393
345
committer: Lorem Ipsum <test@example.com>
395
347
timestamp: Just now
398
350
------------------------------------------------------------
399
351
revno: 1.1.2 [merge]
400
352
committer: Lorem Ipsum <test@example.com>
402
354
timestamp: Just now
405
357
------------------------------------------------------------
407
359
committer: Lorem Ipsum <test@example.com>
360
branch nick: smallerchild
409
361
timestamp: Just now
412
364
------------------------------------------------------------
414
366
committer: Lorem Ipsum <test@example.com>
416
368
timestamp: Just now
419
371
------------------------------------------------------------
421
373
committer: Lorem Ipsum <test@example.com>
423
375
timestamp: Just now
427
self.check_log(expected, ['-n0'])
429
380
def test_force_merge_revisions_off(self):
382
out,err = self.run_bzr('log --long -n1')
383
self.assertEqual('', err)
384
log = normalize_log(out)
385
self.assertEqualDiff(log, """\
431
386
------------------------------------------------------------
433
388
committer: Lorem Ipsum <test@example.com>
435
390
timestamp: Just now
438
393
------------------------------------------------------------
440
395
committer: Lorem Ipsum <test@example.com>
442
397
timestamp: Just now
446
self.check_log(expected, ['--long', '-n1'])
400
------------------------------------------------------------
401
Use --levels 0 (or -n0) to see merged revisions.
448
404
def test_force_merge_revisions_on(self):
450
2 Lorem Ipsum\t2005-11-22 [merge]
453
1.1.2 Lorem Ipsum\t2005-11-22 [merge]
456
1.2.1 Lorem Ipsum\t2005-11-22
459
1.1.1 Lorem Ipsum\t2005-11-22
462
1 Lorem Ipsum\t2005-11-22
466
self.check_log(expected, ['--short', '-n0'])
468
def test_include_merges(self):
469
# Confirm --include-merges gives the same output as -n0
470
out_im, err_im = self.run_bzr('log --include-merges',
471
working_dir='level0')
472
out_n0, err_n0 = self.run_bzr('log -n0', working_dir='level0')
473
self.assertEqual('', err_im)
474
self.assertEqual('', err_n0)
475
self.assertEqual(out_im, out_n0)
405
self._prepare_short()
406
out,err = self.run_bzr('log --short -n0')
407
self.assertEqual('', err)
408
log = normalize_log(out)
409
self.assertEqualDiff(log, """\
410
2 Joe Foo\t2005-11-22 [merge]
413
1.1.2 Joe Foo\t2005-11-22 [merge]
416
1.2.1 Joe Foo\t2005-11-22
419
1.1.1 Joe Foo\t2005-11-22
422
1 Joe Foo\t2005-11-22
477
427
def test_force_merge_revisions_N(self):
479
2 Lorem Ipsum\t2005-11-22 [merge]
482
1.1.2 Lorem Ipsum\t2005-11-22 [merge]
485
1.1.1 Lorem Ipsum\t2005-11-22
488
1 Lorem Ipsum\t2005-11-22
492
self.check_log(expected, ['--short', '-n2'])
428
self._prepare_short()
429
out,err = self.run_bzr('log --short -n2')
430
self.assertEqual('', err)
431
log = normalize_log(out)
432
self.assertEqualDiff(log, """\
433
2 Joe Foo\t2005-11-22 [merge]
436
1.1.2 Joe Foo\t2005-11-22 [merge]
439
1.1.1 Joe Foo\t2005-11-22
442
1 Joe Foo\t2005-11-22
494
447
def test_merges_single_merge_rev(self):
449
out,err = self.run_bzr('log -n0 -r1.1.2')
450
self.assertEqual('', err)
451
log = normalize_log(out)
452
self.assertEqualDiff(log, """\
496
453
------------------------------------------------------------
497
454
revno: 1.1.2 [merge]
498
455
committer: Lorem Ipsum <test@example.com>
500
457
timestamp: Just now
503
460
------------------------------------------------------------
505
462
committer: Lorem Ipsum <test@example.com>
463
branch nick: smallerchild
507
464
timestamp: Just now
511
self.check_log(expected, ['-n0', '-r1.1.2'])
513
469
def test_merges_partial_range(self):
471
out, err = self.run_bzr('log -n0 -r1.1.1..1.1.2')
472
self.assertEqual('', err)
473
log = normalize_log(out)
474
self.assertEqualDiff(log, """\
515
475
------------------------------------------------------------
516
476
revno: 1.1.2 [merge]
517
477
committer: Lorem Ipsum <test@example.com>
519
479
timestamp: Just now
522
482
------------------------------------------------------------
524
484
committer: Lorem Ipsum <test@example.com>
485
branch nick: smallerchild
526
486
timestamp: Just now
529
489
------------------------------------------------------------
531
491
committer: Lorem Ipsum <test@example.com>
533
493
timestamp: Just now
537
self.check_log(expected, ['-n0', '-r1.1.1..1.1.2'])
540
class TestLogDiff(TestLog):
543
super(TestLogDiff, self).setUp()
544
self.make_branch_with_diffs()
546
def make_branch_with_diffs(self):
547
level0 = self.make_branch_and_tree('level0')
548
self.build_tree(['level0/file1', 'level0/file2'])
551
level0.commit(message='in branch level0', **self.commit_options())
553
level1 = level0.bzrdir.sprout('level1').open_workingtree()
554
self.build_tree_contents([('level1/file2', 'hello\n')])
555
level1.commit(message='in branch level1', **self.commit_options())
556
level0.merge_from_branch(level1.branch)
557
level0.commit(message='merge branch level1', **self.commit_options())
499
def subst_dates(string):
500
"""Replace date strings with constant values."""
501
return re.sub(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} [-\+]\d{4}',
502
'YYYY-MM-DD HH:MM:SS +ZZZZ', string)
505
class TestLogDiff(TestCaseWithoutPropsHandler):
508
parent_tree = self.make_branch_and_tree('parent')
509
self.build_tree(['parent/file1', 'parent/file2'])
510
parent_tree.add('file1')
511
parent_tree.add('file2')
512
parent_tree.commit(message='first post',
513
timestamp=1132586655, timezone=36000,
514
committer='Lorem Ipsum <test@example.com>')
515
child_tree = parent_tree.bzrdir.sprout('child').open_workingtree()
516
self.build_tree_contents([('child/file2', 'hello\n')])
517
child_tree.commit(message='branch 1',
518
timestamp=1132586700, timezone=36000,
519
committer='Lorem Ipsum <test@example.com>')
520
parent_tree.merge_from_branch(child_tree.branch)
521
parent_tree.commit(message='merge branch 1',
522
timestamp=1132586800, timezone=36000,
523
committer='Lorem Ipsum <test@example.com>')
559
526
def test_log_show_diff_long_with_merges(self):
560
528
out,err = self.run_bzr('log -p -n0')
561
529
self.assertEqual('', err)
562
log = test_log.normalize_log(out)
530
log = normalize_log(out)
531
self.assertEqualDiff(subst_dates(log), """\
564
532
------------------------------------------------------------
566
534
committer: Lorem Ipsum <test@example.com>
568
536
timestamp: Just now
572
540
=== modified file 'file2'
573
--- file2\t2005-11-22 00:00:01 +0000
574
+++ file2\t2005-11-22 00:00:02 +0000
541
--- file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
542
+++ file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
576
-contents of level0/file2
544
-contents of parent/file2
578
546
------------------------------------------------------------
580
548
committer: Lorem Ipsum <test@example.com>
582
550
timestamp: Just now
586
554
=== modified file 'file2'
587
--- file2\t2005-11-22 00:00:01 +0000
588
+++ file2\t2005-11-22 00:00:02 +0000
555
--- file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
556
+++ file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
590
-contents of level0/file2
558
-contents of parent/file2
592
560
------------------------------------------------------------
594
562
committer: Lorem Ipsum <test@example.com>
596
564
timestamp: Just now
600
568
=== added file 'file1'
601
--- file1\t1970-01-01 00:00:00 +0000
602
+++ file1\t2005-11-22 00:00:01 +0000
569
--- file1\tYYYY-MM-DD HH:MM:SS +ZZZZ
570
+++ file1\tYYYY-MM-DD HH:MM:SS +ZZZZ
604
+contents of level0/file1
572
+contents of parent/file1
606
574
=== added file 'file2'
607
--- file2\t1970-01-01 00:00:00 +0000
608
+++ file2\t2005-11-22 00:00:01 +0000
575
--- file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
576
+++ file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
610
+contents of level0/file2
612
self.check_log(expected, ['-p', '-n0'])
578
+contents of parent/file2
614
581
def test_log_show_diff_short(self):
583
out,err = self.run_bzr('log -p --short')
584
self.assertEqual('', err)
585
log = normalize_log(out)
586
self.assertEqualDiff(subst_dates(log), """\
616
587
2 Lorem Ipsum\t2005-11-22 [merge]
618
589
=== modified file 'file2'
619
--- file2\t2005-11-22 00:00:01 +0000
620
+++ file2\t2005-11-22 00:00:02 +0000
590
--- file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
591
+++ file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
622
-contents of level0/file2
593
-contents of parent/file2
625
596
1 Lorem Ipsum\t2005-11-22
627
598
=== added file 'file1'
628
--- file1\t1970-01-01 00:00:00 +0000
629
+++ file1\t2005-11-22 00:00:01 +0000
599
--- file1\tYYYY-MM-DD HH:MM:SS +ZZZZ
600
+++ file1\tYYYY-MM-DD HH:MM:SS +ZZZZ
631
+contents of level0/file1
602
+contents of parent/file1
632
603
\x20\x20\x20\x20\x20\x20
633
604
=== added file 'file2'
634
--- file2\t1970-01-01 00:00:00 +0000
635
+++ file2\t2005-11-22 00:00:01 +0000
605
--- file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
606
+++ file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
637
+contents of level0/file2
608
+contents of parent/file2
639
Use --include-merges or -n0 to see merged revisions.
641
self.check_log(expected, ['-p', '--short'])
610
Use --levels 0 (or -n0) to see merged revisions.
643
613
def test_log_show_diff_line(self):
615
out,err = self.run_bzr('log -p --line')
616
self.assertEqual('', err)
617
log = normalize_log(out)
644
618
# Not supported by this formatter so expect plain output
646
2: Lorem Ipsum 2005-11-22 [merge] merge branch level1
647
1: Lorem Ipsum 2005-11-22 in branch level0
649
self.check_log(expected, ['-p', '--line'])
651
def test_log_show_diff_file1(self):
652
"""Only the diffs for the given file are to be shown"""
654
1 Lorem Ipsum\t2005-11-22
656
=== added file 'file1'
657
--- file1\t1970-01-01 00:00:00 +0000
658
+++ file1\t2005-11-22 00:00:01 +0000
660
+contents of level0/file1
663
self.check_log(expected, ['-p', '--short', 'file1'])
665
def test_log_show_diff_file2(self):
666
"""Only the diffs for the given file are to be shown"""
619
self.assertEqualDiff(subst_dates(log), """\
620
2: Lorem Ipsum 2005-11-22 [merge] merge branch 1
621
1: Lorem Ipsum 2005-11-22 first post
624
def test_log_show_diff_file(self):
625
"""Only the diffs for the given file are to be shown"""
627
out,err = self.run_bzr('log -p --short file2')
628
self.assertEqual('', err)
629
log = normalize_log(out)
630
self.assertEqualDiff(subst_dates(log), """\
668
631
2 Lorem Ipsum\t2005-11-22 [merge]
670
633
=== modified file 'file2'
671
--- file2\t2005-11-22 00:00:01 +0000
672
+++ file2\t2005-11-22 00:00:02 +0000
634
--- file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
635
+++ file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
674
-contents of level0/file2
637
-contents of parent/file2
677
640
1 Lorem Ipsum\t2005-11-22
679
642
=== added file 'file2'
680
--- file2\t1970-01-01 00:00:00 +0000
681
+++ file2\t2005-11-22 00:00:01 +0000
683
+contents of level0/file2
685
Use --include-merges or -n0 to see merged revisions.
687
self.check_log(expected, ['-p', '--short', 'file2'])
690
class TestLogUnicodeDiff(TestLog):
643
--- file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
644
+++ file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
646
+contents of parent/file2
648
Use --levels 0 (or -n0) to see merged revisions.
650
out,err = self.run_bzr('log -p --short file1')
651
self.assertEqual('', err)
652
log = normalize_log(out)
653
self.assertEqualDiff(subst_dates(log), """\
654
1 Lorem Ipsum\t2005-11-22
656
=== added file 'file1'
657
--- file1\tYYYY-MM-DD HH:MM:SS +ZZZZ
658
+++ file1\tYYYY-MM-DD HH:MM:SS +ZZZZ
660
+contents of parent/file1
692
664
def test_log_show_diff_non_ascii(self):
693
665
# Smoke test for bug #328007 UnicodeDecodeError on 'log -p'