77
75
self.log_catcher = test_log.LogCatcher(*args, **kwargs)
78
76
# Always return our own log formatter
79
77
return self.log_catcher
78
# Break cycle with closure over self on cleanup by removing method
79
self.addCleanup(setattr, MyLogFormatter, "__new__", None)
82
82
# Always return our own log formatter class hijacking the
158
158
self.make_linear_branch()
159
159
self.assertLogRevnos(['-c1'], ['1'])
161
def test_branch_revspec(self):
162
foo = self.make_branch_and_tree('foo')
163
bar = self.make_branch_and_tree('bar')
164
self.build_tree(['foo/foo.txt', 'bar/bar.txt'])
167
foo.commit(message='foo')
168
bar.commit(message='bar')
169
self.run_bzr('log -r branch:../bar', working_dir='foo')
170
self.assertEqual([bar.branch.get_rev_id(1)],
172
for r in self.get_captured_revisions()])
175
class TestLogExcludeCommonAncestry(TestLogWithLogCatcher):
177
def test_exclude_common_ancestry_simple_revnos(self):
178
self.make_linear_branch()
179
self.assertLogRevnos(['-r1..3', '--exclude-common-ancestry'],
162
183
class TestLogMergedLinearAncestry(TestLogWithLogCatcher):
167
188
# stop calling run_bzr, there is no point) --vila 100118.
168
189
builder = branchbuilder.BranchBuilder(self.get_transport())
169
190
builder.start_series()
171
204
builder.build_snapshot('1', None, [
172
205
('add', ('', 'root-id', 'directory', ''))])
349
382
def test_log_bad_message_re(self):
350
383
"""Bad --message argument gives a sensible message
352
385
See https://bugs.launchpad.net/bzr/+bug/251352
354
387
self.make_minimal_branch()
355
388
out, err = self.run_bzr(['log', '-m', '*'], retcode=3)
356
self.assertEqual("bzr: ERROR: Invalid regular expression"
357
" in log message filter"
359
": nothing to repeat\n", err)
360
self.assertEqual('', out)
389
self.assertContainsRe(err, "ERROR.*Invalid pattern.*nothing to repeat")
390
self.assertNotContainsRe(err, "Unprintable exception")
391
self.assertEqual(out, '')
362
393
def test_log_unsupported_timezone(self):
363
394
self.make_linear_branch()
893
924
self.prepare_tree()
895
926
self.assertLogRevnos(['dir2', 'file5'], ['5', '3'])
929
class MainlineGhostTests(TestLogWithLogCatcher):
932
super(MainlineGhostTests, self).setUp()
933
tree = self.make_branch_and_tree('')
934
tree.set_parent_ids(["spooky"], allow_leftmost_as_ghost=True)
936
tree.commit('msg1', rev_id='rev1')
937
tree.commit('msg2', rev_id='rev2')
939
def test_log_range(self):
940
self.assertLogRevnos(["-r1..2"], ["2", "1"])
942
def test_log_norange(self):
943
self.assertLogRevnos([], ["2", "1"])
945
def test_log_range_open_begin(self):
946
raise tests.KnownFailure("log with ghosts fails. bug #726466")
947
(stdout, stderr) = self.run_bzr(['log', '-r..2'], retcode=3)
948
self.assertEqual(["2", "1"],
949
[r.revno for r in self.get_captured_revisions()])
950
self.assertEquals("bzr: ERROR: Further revision history missing.", stderr)
952
def test_log_range_open_end(self):
953
self.assertLogRevnos(["-r1.."], ["2", "1"])