Rev 4330: Some cleanup in blackbox log tests. in file:///home/vila/src/bzr/experimental/log-tests/
Vincent Ladeuil
v.ladeuil+lp at free.fr
Thu May 7 18:03:30 BST 2009
At file:///home/vila/src/bzr/experimental/log-tests/
------------------------------------------------------------
revno: 4330
revision-id: v.ladeuil+lp at free.fr-20090507170330-smhj6usbtj2i2d4l
parent: v.ladeuil+lp at free.fr-20090506081744-cddmmug2gl2wm7ex
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: log-tests
timestamp: Thu 2009-05-07 19:03:30 +0200
message:
Some cleanup in blackbox log tests.
* bzrlib/tests/blackbox/test_log.py:
(TestLog.make_minimal_branch, TestLog.make_linear_branch,
TestLog.commit_options, TestLog.check_log): New helpers.
(TestLogRevSpecs): Start splitting tests in more focused
classes. Reduce setUp scope to get better focused tests too (not
all the tests require the same branch nor its associated full
log).
(TestLogTZ): Separate timezone related test.
(TestLogVerbose): Simplify setup.
(TestLogMerges): Unify setups and use more regular commit messages
and branch nicks.
(TestLogMerges.check_log): Unify checks respecting setup
constraints.
(subst_dates): Deleted, we now have commits with fixed dates.
(TestLogDiff): Unify setups and use more regular commit messages
and branch nicks.
(TestLogUnicodeDiff): Isolate unicode test as it uses a different
setup.
-------------- next part --------------
=== modified file 'bzrlib/tests/blackbox/test_log.py'
--- a/bzrlib/tests/blackbox/test_log.py 2009-05-06 08:10:37 +0000
+++ b/bzrlib/tests/blackbox/test_log.py 2009-05-07 17:03:30 +0000
@@ -29,7 +29,19 @@
class TestLog(tests.TestCaseWithTransport):
- def _prepare(self, path='.', format=None):
+ def setUp(self):
+ super(TestLog, self).setUp()
+ self.timezone = 0 # UTC
+ self.timestamp =1132617600 # Mon 2005-11-22 00:00:00 +0000
+
+ def make_minimal_branch(self, path='.', format=None):
+ tree = self.make_branch_and_tree(path, format=format)
+ self.build_tree([path + '/hello.txt'])
+ tree.add('hello.txt')
+ tree.commit(message='message1')
+ return tree
+
+ def make_linear_branch(self, path='.', format=None):
tree = self.make_branch_and_tree(path, format=format)
self.build_tree(
[path + '/hello.txt', path + '/goodbye.txt', path + '/meep.txt'])
@@ -39,94 +51,118 @@
tree.commit(message='message2')
tree.add('meep.txt')
tree.commit(message='message3')
- self.full_log = self.run_bzr(["log", path])[0]
return tree
+ def commit_options(self):
+ """Use some mostly fixed values for commits to simplify tests.
+
+ Tests can use this function to get some commit attributes. The time
+ stamp is incremented at each commit.
+ """
+ self.timestamp += 1 # 1 second between each commit
+ return dict(committer='Lorem Ipsum <joe at foo.com>',
+ timezone=self.timezone,
+ timestamp=self.timestamp,
+ )
+
+ def check_log(self, expected, args, working_dir='level0'):
+ out, err = self.run_bzr(['log', '--timezone', 'utc'] + args,
+ working_dir=working_dir)
+ self.assertEqual('', err)
+ self.assertEqualDiff(expected, test_log.normalize_log(out))
+
+
+
+class TestLogRevSpecs(TestLog):
+
def test_log_null_end_revspec(self):
- self._prepare()
- self.assertTrue('revno: 1\n' in self.full_log)
- self.assertTrue('revno: 2\n' in self.full_log)
- self.assertTrue('revno: 3\n' in self.full_log)
- self.assertTrue('message:\n message1\n' in self.full_log)
- self.assertTrue('message:\n message2\n' in self.full_log)
- self.assertTrue('message:\n message3\n' in self.full_log)
+ self.make_linear_branch()
+ log = self.run_bzr(['log'])[0]
+ self.assertTrue('revno: 1\n' in log)
+ self.assertTrue('revno: 2\n' in log)
+ self.assertTrue('revno: 3\n' in log)
+ self.assertTrue('message:\n message1\n' in log)
+ self.assertTrue('message:\n message2\n' in log)
+ self.assertTrue('message:\n message3\n' in log)
+ full_log = self.run_bzr(['log'])[0]
log = self.run_bzr("log -r 1..")[0]
- self.assertEqualDiff(log, self.full_log)
+ self.assertEqualDiff(log, full_log)
def test_log_null_begin_revspec(self):
- self._prepare()
+ self.make_linear_branch()
+ full_log = self.run_bzr(['log'])[0]
log = self.run_bzr("log -r ..3")[0]
- self.assertEqualDiff(self.full_log, log)
+ self.assertEqualDiff(full_log, log)
def test_log_null_both_revspecs(self):
- self._prepare()
+ self.make_linear_branch()
+ full_log = self.run_bzr(['log'])[0]
log = self.run_bzr("log -r ..")[0]
- self.assertEqualDiff(self.full_log, log)
+ self.assertEqualDiff(full_log, log)
def test_log_zero_revspec(self):
- self._prepare()
+ self.make_minimal_branch()
self.run_bzr_error('bzr: ERROR: Logging revision 0 is invalid.',
['log', '-r0'])
def test_log_zero_begin_revspec(self):
- self._prepare()
+ self.make_linear_branch()
self.run_bzr_error('bzr: ERROR: Logging revision 0 is invalid.',
['log', '-r0..2'])
def test_log_zero_end_revspec(self):
- self._prepare()
+ self.make_linear_branch()
self.run_bzr_error('bzr: ERROR: Logging revision 0 is invalid.',
['log', '-r-2..0'])
- def test_log_unsupported_timezone(self):
- self._prepare()
- self.run_bzr_error('bzr: ERROR: Unsupported timezone format "foo", '
- 'options are "utc", "original", "local".',
- ['log', '--timezone', 'foo'])
-
def test_log_negative_begin_revspec_full_log(self):
- self._prepare()
+ self.make_linear_branch()
+ full_log = self.run_bzr(['log'])[0]
log = self.run_bzr("log -r -3..")[0]
- self.assertEqualDiff(self.full_log, log)
+ self.assertEqualDiff(full_log, log)
def test_log_negative_both_revspec_full_log(self):
- self._prepare()
+ self.make_linear_branch()
+ full_log = self.run_bzr(['log'])[0]
log = self.run_bzr("log -r -3..-1")[0]
- self.assertEqualDiff(self.full_log, log)
+ self.assertEqualDiff(full_log, log)
def test_log_negative_both_revspec_partial(self):
- self._prepare()
+ self.make_linear_branch()
log = self.run_bzr("log -r -3..-2")[0]
self.assertTrue('revno: 1\n' in log)
self.assertTrue('revno: 2\n' in log)
self.assertTrue('revno: 3\n' not in log)
def test_log_negative_begin_revspec(self):
- self._prepare()
+ self.make_linear_branch()
log = self.run_bzr("log -r -2..")[0]
self.assertTrue('revno: 1\n' not in log)
self.assertTrue('revno: 2\n' in log)
self.assertTrue('revno: 3\n' in log)
def test_log_positive_revspecs(self):
- self._prepare()
+ self.make_linear_branch()
+ full_log = self.run_bzr(['log'])[0]
log = self.run_bzr("log -r 1..3")[0]
- self.assertEqualDiff(self.full_log, log)
+ self.assertEqualDiff(full_log, log)
def test_log_reversed_revspecs(self):
- self._prepare()
+ self.make_linear_branch()
self.run_bzr_error(('bzr: ERROR: Start revision must be older than '
'the end revision.\n',),
['log', '-r3..1'])
def test_log_revno_n_path(self):
- self._prepare(path='branch1')
- self._prepare(path='branch2')
- log = self.run_bzr("log -r revno:2:branch1..revno:3:branch2",
- retcode=3)[0]
+ self.make_linear_branch('branch1')
+ self.make_linear_branch('branch2')
+ # Swapped revisions
+ self.run_bzr("log -r revno:2:branch1..revno:3:branch2", retcode=3)[0]
+ # Correct order
log = self.run_bzr("log -r revno:1:branch2..revno:3:branch2")[0]
- self.assertEqualDiff(self.full_log, log)
+ full_log = self.run_bzr(['log'], working_dir='branch2')[0]
+ self.assertEqualDiff(full_log, log)
log = self.run_bzr("log -r revno:1:branch2")[0]
self.assertTrue('revno: 1\n' in log)
self.assertTrue('revno: 2\n' not in log)
@@ -134,57 +170,57 @@
self.assertTrue('branch nick: branch1\n' not in log)
def test_log_nonexistent_revno(self):
- self._prepare()
+ self.make_minimal_branch()
(out, err) = self.run_bzr_error(args="log -r 1234",
error_regexes=["bzr: ERROR: Requested revision: '1234' "
- "does not exist in branch:"])
+ "does not exist in branch:"])
def test_log_nonexistent_dotted_revno(self):
- self._prepare()
+ self.make_minimal_branch()
(out, err) = self.run_bzr_error(args="log -r 123.123",
error_regexes=["bzr: ERROR: Requested revision: '123.123' "
"does not exist in branch:"])
def test_log_change_revno(self):
- self._prepare()
+ self.make_linear_branch()
expected_log = self.run_bzr("log -r 1")[0]
log = self.run_bzr("log -c 1")[0]
self.assertEqualDiff(expected_log, log)
def test_log_change_nonexistent_revno(self):
- self._prepare()
+ self.make_minimal_branch()
(out, err) = self.run_bzr_error(args="log -c 1234",
error_regexes=["bzr: ERROR: Requested revision: '1234' "
- "does not exist in branch:"])
+ "does not exist in branch:"])
def test_log_change_nonexistent_dotted_revno(self):
- self._prepare()
+ self.make_minimal_branch()
(out, err) = self.run_bzr_error(args="log -c 123.123",
error_regexes=["bzr: ERROR: Requested revision: '123.123' "
- "does not exist in branch:"])
+ "does not exist in branch:"])
- def test_log_change_single_revno(self):
- self._prepare()
+ def test_log_change_single_revno_only(self):
+ self.make_minimal_branch()
self.run_bzr_error('bzr: ERROR: Option --change does not'
' accept revision ranges',
['log', '--change', '2..3'])
def test_log_change_incompatible_with_revision(self):
- self._prepare()
self.run_bzr_error('bzr: ERROR: --revision and --change'
' are mutually exclusive',
['log', '--change', '2', '--revision', '3'])
def test_log_nonexistent_file(self):
+ self.make_minimal_branch()
# files that don't exist in either the basis tree or working tree
# should give an error
- wt = self.make_branch_and_tree('.')
out, err = self.run_bzr('log does-not-exist', retcode=3)
- self.assertContainsRe(
- err, 'Path unknown at end or start of revision range: does-not-exist')
+ self.assertContainsRe(err,
+ 'Path unknown at end or start of revision range: '
+ 'does-not-exist')
def test_log_with_tags(self):
- tree = self._prepare(format='dirstate-tags')
+ tree = self.make_linear_branch(format='dirstate-tags')
branch = tree.branch
branch.tags.set_tag('tag1', branch.get_rev_id(1))
branch.tags.set_tag('tag1.1', branch.get_rev_id(1))
@@ -199,17 +235,18 @@
self.assertContainsRe(log, r'tags: (tag1, tag1\.1|tag1\.1, tag1)')
def test_merged_log_with_tags(self):
- branch1_tree = self._prepare(path='branch1', format='dirstate-tags')
+ branch1_tree = self.make_linear_branch('branch1',
+ format='dirstate-tags')
branch1 = branch1_tree.branch
branch2_tree = branch1_tree.bzrdir.sprout('branch2').open_workingtree()
branch1_tree.commit(message='foobar', allow_pointless=True)
branch1.tags.set_tag('tag1', branch1.last_revision())
- os.chdir('branch2')
- self.run_bzr('merge ../branch1') # tags don't propagate otherwise
+ # tags don't propagate if we don't merge
+ self.run_bzr('merge ../branch1', working_dir='branch2')
branch2_tree.commit(message='merge branch 1')
- log = self.run_bzr("log -n0 -r-1")[0]
+ log = self.run_bzr("log -n0 -r-1", working_dir='branch2')[0]
self.assertContainsRe(log, r' tags: tag1')
- log = self.run_bzr("log -n0 -r3.1.1")[0]
+ log = self.run_bzr("log -n0 -r3.1.1", working_dir='branch2')[0]
self.assertContainsRe(log, r'tags: tag1')
def test_log_limit(self):
@@ -230,7 +267,7 @@
self.assertContainsRe(log, r'revno: 10\n')
def test_log_limit_short(self):
- self._prepare()
+ self.make_linear_branch()
log = self.run_bzr("log -l 2")[0]
self.assertNotContainsRe(log, r'revno: 1\n')
self.assertContainsRe(log, r'revno: 2\n')
@@ -241,7 +278,7 @@
See https://bugs.launchpad.net/bzr/+bug/251352
"""
- self._prepare()
+ self.make_minimal_branch()
out, err = self.run_bzr(['log', '-m', '*'], retcode=3)
self.assertEqual("bzr: ERROR: Invalid regular expression"
" in log message filter"
@@ -250,14 +287,20 @@
self.assertEqual('', out)
-class TestLogVerbose(tests.TestCaseWithTransport):
+class TestLogTimeZone(TestLog):
+
+ def test_log_unsupported_timezone(self):
+ self.make_linear_branch()
+ self.run_bzr_error('bzr: ERROR: Unsupported timezone format "foo", '
+ 'options are "utc", "original", "local".',
+ ['log', '--timezone', 'foo'])
+
+
+class TestLogVerbose(TestLog):
def setUp(self):
super(TestLogVerbose, self).setUp()
- tree = self.make_branch_and_tree('.')
- self.build_tree(['hello.txt'])
- tree.add('hello.txt')
- tree.commit(message='message1')
+ self.make_minimal_branch()
def assertUseShortDeltaFormat(self, cmd):
log = self.run_bzr(cmd)[0]
@@ -288,378 +331,330 @@
self.assertUseLongDeltaFormat(['log', '--long', '-vv'])
-class TestLogMerges(test_log.TestCaseWithoutPropsHandler):
-
- def _prepare(self):
- parent_tree = self.make_branch_and_tree('parent')
- parent_tree.commit(message='first post', allow_pointless=True)
- child_tree = parent_tree.bzrdir.sprout('child').open_workingtree()
- child_tree.commit(message='branch 1', allow_pointless=True)
- smaller_tree = \
- child_tree.bzrdir.sprout('smallerchild').open_workingtree()
- smaller_tree.commit(message='branch 2', allow_pointless=True)
- child_tree.merge_from_branch(smaller_tree.branch)
- child_tree.commit(message='merge branch 2')
- parent_tree.merge_from_branch(child_tree.branch)
- parent_tree.commit(message='merge branch 1')
- os.chdir('parent')
-
- def _prepare_short(self):
- parent_tree = self.make_branch_and_tree('parent')
- parent_tree.commit(message='first post',
- timestamp=1132586700, timezone=36000,
- committer='Joe Foo <joe at foo.com>')
- child_tree = parent_tree.bzrdir.sprout('child').open_workingtree()
- child_tree.commit(message='branch 1',
- timestamp=1132586800, timezone=36000,
- committer='Joe Foo <joe at foo.com>')
- smaller_tree = \
- child_tree.bzrdir.sprout('smallerchild').open_workingtree()
- smaller_tree.commit(message='branch 2',
- timestamp=1132586900, timezone=36000,
- committer='Joe Foo <joe at foo.com>')
- child_tree.merge_from_branch(smaller_tree.branch)
- child_tree.commit(message='merge branch 2',
- timestamp=1132587000, timezone=36000,
- committer='Joe Foo <joe at foo.com>')
- parent_tree.merge_from_branch(child_tree.branch)
- parent_tree.commit(message='merge branch 1',
- timestamp=1132587100, timezone=36000,
- committer='Joe Foo <joe at foo.com>')
- os.chdir('parent')
+class TestLogMerges(TestLog):
+
+ def setUp(self):
+ super(TestLogMerges, self).setUp()
+ self.make_branches_with_merges()
+
+ def make_branches_with_merges(self):
+ level0 = self.make_branch_and_tree('level0')
+ level0.commit(message='in branch level0', **self.commit_options())
+
+ level1 = level0.bzrdir.sprout('level1').open_workingtree()
+ level1.commit(message='in branch level1', **self.commit_options())
+
+ level2 = level1.bzrdir.sprout('level2').open_workingtree()
+ level2.commit(message='in branch level2', **self.commit_options())
+
+ level1.merge_from_branch(level2.branch)
+ level1.commit(message='merge branch level2', **self.commit_options())
+
+ level0.merge_from_branch(level1.branch)
+ level0.commit(message='merge branch level1', **self.commit_options())
def test_merges_are_indented_by_level(self):
- self._prepare()
- out,err = self.run_bzr('log -n0')
- self.assertEqual('', err)
- log = test_log.normalize_log(out)
- self.assertEqualDiff(log, """\
+ expected = """\
------------------------------------------------------------
revno: 2 [merge]
committer: Lorem Ipsum <test at example.com>
-branch nick: parent
+branch nick: level0
timestamp: Just now
message:
- merge branch 1
+ merge branch level1
------------------------------------------------------------
revno: 1.1.2 [merge]
committer: Lorem Ipsum <test at example.com>
- branch nick: child
+ branch nick: level1
timestamp: Just now
message:
- merge branch 2
+ merge branch level2
------------------------------------------------------------
revno: 1.2.1
committer: Lorem Ipsum <test at example.com>
- branch nick: smallerchild
+ branch nick: level2
timestamp: Just now
message:
- branch 2
+ in branch level2
------------------------------------------------------------
revno: 1.1.1
committer: Lorem Ipsum <test at example.com>
- branch nick: child
+ branch nick: level1
timestamp: Just now
message:
- branch 1
+ in branch level1
------------------------------------------------------------
revno: 1
committer: Lorem Ipsum <test at example.com>
-branch nick: parent
+branch nick: level0
timestamp: Just now
message:
- first post
-""")
+ in branch level0
+"""
+ self.check_log(expected, ['-n0'])
def test_force_merge_revisions_off(self):
- self._prepare()
- out,err = self.run_bzr('log --long -n1')
- self.assertEqual('', err)
- log = test_log.normalize_log(out)
- self.assertEqualDiff(log, """\
+ expected = """\
------------------------------------------------------------
revno: 2 [merge]
committer: Lorem Ipsum <test at example.com>
-branch nick: parent
+branch nick: level0
timestamp: Just now
message:
- merge branch 1
+ merge branch level1
------------------------------------------------------------
revno: 1
committer: Lorem Ipsum <test at example.com>
-branch nick: parent
+branch nick: level0
timestamp: Just now
message:
- first post
-""")
+ in branch level0
+"""
+ self.check_log(expected, ['--long', '-n1'])
def test_force_merge_revisions_on(self):
- self._prepare_short()
- out,err = self.run_bzr('log --short -n0')
- self.assertEqual('', err)
- log = test_log.normalize_log(out)
- self.assertEqualDiff(log, """\
- 2 Joe Foo\t2005-11-22 [merge]
- merge branch 1
-
- 1.1.2 Joe Foo\t2005-11-22 [merge]
- merge branch 2
-
- 1.2.1 Joe Foo\t2005-11-22
- branch 2
-
- 1.1.1 Joe Foo\t2005-11-22
- branch 1
-
- 1 Joe Foo\t2005-11-22
- first post
-
-""")
+ expected = """\
+ 2 Lorem Ipsum\t2005-11-22 [merge]
+ merge branch level1
+
+ 1.1.2 Lorem Ipsum\t2005-11-22 [merge]
+ merge branch level2
+
+ 1.2.1 Lorem Ipsum\t2005-11-22
+ in branch level2
+
+ 1.1.1 Lorem Ipsum\t2005-11-22
+ in branch level1
+
+ 1 Lorem Ipsum\t2005-11-22
+ in branch level0
+
+"""
+ self.check_log(expected, ['--short', '-n0'])
def test_include_merges(self):
# Confirm --include-merges gives the same output as -n0
- self._prepare_short()
- out_im, err_im = self.run_bzr('log --include-merges')
- out_n0, err_n0 = self.run_bzr('log -n0')
- self.assertEqual(err_im, err_n0)
+ out_im, err_im = self.run_bzr('log --include-merges',
+ working_dir='level0')
+ out_n0, err_n0 = self.run_bzr('log -n0', working_dir='level0')
+ self.assertEqual('', err_im)
+ self.assertEqual('', err_n0)
self.assertEqual(out_im, out_n0)
def test_force_merge_revisions_N(self):
- self._prepare_short()
- out,err = self.run_bzr('log --short -n2')
- self.assertEqual('', err)
- log = test_log.normalize_log(out)
- self.assertEqualDiff(log, """\
- 2 Joe Foo\t2005-11-22 [merge]
- merge branch 1
-
- 1.1.2 Joe Foo\t2005-11-22 [merge]
- merge branch 2
-
- 1.1.1 Joe Foo\t2005-11-22
- branch 1
-
- 1 Joe Foo\t2005-11-22
- first post
-
-""")
+ expected = """\
+ 2 Lorem Ipsum\t2005-11-22 [merge]
+ merge branch level1
+
+ 1.1.2 Lorem Ipsum\t2005-11-22 [merge]
+ merge branch level2
+
+ 1.1.1 Lorem Ipsum\t2005-11-22
+ in branch level1
+
+ 1 Lorem Ipsum\t2005-11-22
+ in branch level0
+
+"""
+ self.check_log(expected, ['--short', '-n2'])
def test_merges_single_merge_rev(self):
- self._prepare()
- out,err = self.run_bzr('log -n0 -r1.1.2')
- self.assertEqual('', err)
- log = test_log.normalize_log(out)
- self.assertEqualDiff(log, """\
+ expected = """\
------------------------------------------------------------
revno: 1.1.2 [merge]
committer: Lorem Ipsum <test at example.com>
-branch nick: child
+branch nick: level1
timestamp: Just now
message:
- merge branch 2
+ merge branch level2
------------------------------------------------------------
revno: 1.2.1
committer: Lorem Ipsum <test at example.com>
- branch nick: smallerchild
+ branch nick: level2
timestamp: Just now
message:
- branch 2
-""")
+ in branch level2
+"""
+ self.check_log(expected, ['-n0', '-r1.1.2'])
def test_merges_partial_range(self):
- self._prepare()
- out, err = self.run_bzr('log -n0 -r1.1.1..1.1.2')
- self.assertEqual('', err)
- log = test_log.normalize_log(out)
- self.assertEqualDiff(log, """\
+ expected = """\
------------------------------------------------------------
revno: 1.1.2 [merge]
committer: Lorem Ipsum <test at example.com>
-branch nick: child
+branch nick: level1
timestamp: Just now
message:
- merge branch 2
+ merge branch level2
------------------------------------------------------------
revno: 1.2.1
committer: Lorem Ipsum <test at example.com>
- branch nick: smallerchild
+ branch nick: level2
timestamp: Just now
message:
- branch 2
+ in branch level2
------------------------------------------------------------
revno: 1.1.1
committer: Lorem Ipsum <test at example.com>
-branch nick: child
+branch nick: level1
timestamp: Just now
message:
- branch 1
-""")
-
-
-def subst_dates(string):
- """Replace date strings with constant values."""
- return re.sub(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} [-\+]\d{4}',
- 'YYYY-MM-DD HH:MM:SS +ZZZZ', string)
-
-
-class TestLogDiff(test_log.TestCaseWithoutPropsHandler):
-
- def _prepare(self):
- parent_tree = self.make_branch_and_tree('parent')
- self.build_tree(['parent/file1', 'parent/file2'])
- parent_tree.add('file1')
- parent_tree.add('file2')
- parent_tree.commit(message='first post',
- timestamp=1132586655, timezone=36000,
- committer='Lorem Ipsum <test at example.com>')
- child_tree = parent_tree.bzrdir.sprout('child').open_workingtree()
- self.build_tree_contents([('child/file2', 'hello\n')])
- child_tree.commit(message='branch 1',
- timestamp=1132586700, timezone=36000,
- committer='Lorem Ipsum <test at example.com>')
- parent_tree.merge_from_branch(child_tree.branch)
- parent_tree.commit(message='merge branch 1',
- timestamp=1132586800, timezone=36000,
- committer='Lorem Ipsum <test at example.com>')
- os.chdir('parent')
+ in branch level1
+"""
+ self.check_log(expected, ['-n0', '-r1.1.1..1.1.2'])
+
+
+class TestLogDiff(TestLog):
+
+ def setUp(self):
+ super(TestLogDiff, self).setUp()
+ self.make_branch_with_diffs()
+
+ def make_branch_with_diffs(self):
+ level0 = self.make_branch_and_tree('level0')
+ self.build_tree(['level0/file1', 'level0/file2'])
+ level0.add('file1')
+ level0.add('file2')
+ level0.commit(message='in branch level0', **self.commit_options())
+
+ level1 = level0.bzrdir.sprout('level1').open_workingtree()
+ self.build_tree_contents([('level1/file2', 'hello\n')])
+ level1.commit(message='in branch level1', **self.commit_options())
+ level0.merge_from_branch(level1.branch)
+ level0.commit(message='merge branch level1', **self.commit_options())
def test_log_show_diff_long_with_merges(self):
- self._prepare()
out,err = self.run_bzr('log -p -n0')
self.assertEqual('', err)
log = test_log.normalize_log(out)
- self.assertEqualDiff(subst_dates(log), """\
+ expected = """\
------------------------------------------------------------
revno: 2 [merge]
committer: Lorem Ipsum <test at example.com>
-branch nick: parent
+branch nick: level0
timestamp: Just now
message:
- merge branch 1
+ merge branch level1
diff:
=== modified file 'file2'
---- file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
-+++ file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
+--- file2 2005-11-22 00:00:01 +0000
++++ file2 2005-11-22 00:00:02 +0000
@@ -1,1 +1,1 @@
--contents of parent/file2
+-contents of level0/file2
+hello
------------------------------------------------------------
revno: 1.1.1
committer: Lorem Ipsum <test at example.com>
- branch nick: child
+ branch nick: level1
timestamp: Just now
message:
- branch 1
+ in branch level1
diff:
=== modified file 'file2'
- --- file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
- +++ file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
+ --- file2 2005-11-22 00:00:01 +0000
+ +++ file2 2005-11-22 00:00:02 +0000
@@ -1,1 +1,1 @@
- -contents of parent/file2
+ -contents of level0/file2
+hello
------------------------------------------------------------
revno: 1
committer: Lorem Ipsum <test at example.com>
-branch nick: parent
+branch nick: level0
timestamp: Just now
message:
- first post
+ in branch level0
diff:
=== added file 'file1'
---- file1\tYYYY-MM-DD HH:MM:SS +ZZZZ
-+++ file1\tYYYY-MM-DD HH:MM:SS +ZZZZ
+--- file1 1970-01-01 00:00:00 +0000
++++ file1 2005-11-22 00:00:01 +0000
@@ -0,0 +1,1 @@
-+contents of parent/file1
++contents of level0/file1
=== added file 'file2'
---- file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
-+++ file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
+--- file2 1970-01-01 00:00:00 +0000
++++ file2 2005-11-22 00:00:01 +0000
@@ -0,0 +1,1 @@
-+contents of parent/file2
-""")
++contents of level0/file2
+"""
+ self.check_log(expected, ['-p', '-n0'])
def test_log_show_diff_short(self):
- self._prepare()
- out,err = self.run_bzr('log -p --short')
- self.assertEqual('', err)
- log = test_log.normalize_log(out)
- self.assertEqualDiff(subst_dates(log), """\
+ expected = """\
2 Lorem Ipsum\t2005-11-22 [merge]
- merge branch 1
+ merge branch level1
=== modified file 'file2'
- --- file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
- +++ file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
+ --- file2 2005-11-22 00:00:01 +0000
+ +++ file2 2005-11-22 00:00:02 +0000
@@ -1,1 +1,1 @@
- -contents of parent/file2
+ -contents of level0/file2
+hello
1 Lorem Ipsum\t2005-11-22
- first post
+ in branch level0
=== added file 'file1'
- --- file1\tYYYY-MM-DD HH:MM:SS +ZZZZ
- +++ file1\tYYYY-MM-DD HH:MM:SS +ZZZZ
+ --- file1 1970-01-01 00:00:00 +0000
+ +++ file1 2005-11-22 00:00:01 +0000
@@ -0,0 +1,1 @@
- +contents of parent/file1
+ +contents of level0/file1
\x20\x20\x20\x20\x20\x20
=== added file 'file2'
- --- file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
- +++ file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
+ --- file2 1970-01-01 00:00:00 +0000
+ +++ file2 2005-11-22 00:00:01 +0000
@@ -0,0 +1,1 @@
- +contents of parent/file2
+ +contents of level0/file2
Use --include-merges or -n0 to see merged revisions.
-""")
+"""
+ self.check_log(expected, ['-p', '--short'])
def test_log_show_diff_line(self):
- self._prepare()
- out,err = self.run_bzr('log -p --line')
- self.assertEqual('', err)
- log = test_log.normalize_log(out)
# Not supported by this formatter so expect plain output
- self.assertEqualDiff(subst_dates(log), """\
-2: Lorem Ipsum 2005-11-22 [merge] merge branch 1
-1: Lorem Ipsum 2005-11-22 first post
-""")
-
- def test_log_show_diff_file(self):
- """Only the diffs for the given file are to be shown"""
- self._prepare()
- out,err = self.run_bzr('log -p --short file2')
- self.assertEqual('', err)
- log = test_log.normalize_log(out)
- self.assertEqualDiff(subst_dates(log), """\
+ expected = """\
+2: Lorem Ipsum 2005-11-22 [merge] merge branch level1
+1: Lorem Ipsum 2005-11-22 in branch level0
+"""
+ self.check_log(expected, ['-p', '--line'])
+
+ def test_log_show_diff_file1(self):
+ """Only the diffs for the given file are to be shown"""
+ expected = """\
+ 1 Lorem Ipsum\t2005-11-22
+ in branch level0
+ === added file 'file1'
+ --- file1 1970-01-01 00:00:00 +0000
+ +++ file1 2005-11-22 00:00:01 +0000
+ @@ -0,0 +1,1 @@
+ +contents of level0/file1
+
+"""
+ self.check_log(expected, ['-p', '--short', 'file1'])
+
+ def test_log_show_diff_file2(self):
+ """Only the diffs for the given file are to be shown"""
+ expected = """\
2 Lorem Ipsum\t2005-11-22 [merge]
- merge branch 1
+ merge branch level1
=== modified file 'file2'
- --- file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
- +++ file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
+ --- file2 2005-11-22 00:00:01 +0000
+ +++ file2 2005-11-22 00:00:02 +0000
@@ -1,1 +1,1 @@
- -contents of parent/file2
+ -contents of level0/file2
+hello
1 Lorem Ipsum\t2005-11-22
- first post
+ in branch level0
=== added file 'file2'
- --- file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
- +++ file2\tYYYY-MM-DD HH:MM:SS +ZZZZ
+ --- file2 1970-01-01 00:00:00 +0000
+ +++ file2 2005-11-22 00:00:01 +0000
@@ -0,0 +1,1 @@
- +contents of parent/file2
+ +contents of level0/file2
Use --include-merges or -n0 to see merged revisions.
-""")
- out,err = self.run_bzr('log -p --short file1')
- self.assertEqual('', err)
- log = test_log.normalize_log(out)
- self.assertEqualDiff(subst_dates(log), """\
- 1 Lorem Ipsum\t2005-11-22
- first post
- === added file 'file1'
- --- file1\tYYYY-MM-DD HH:MM:SS +ZZZZ
- +++ file1\tYYYY-MM-DD HH:MM:SS +ZZZZ
- @@ -0,0 +1,1 @@
- +contents of parent/file1
-
-""")
+"""
+ self.check_log(expected, ['-p', '--short', 'file2'])
+
+
+class TestLogUnicodeDiff(TestLog):
def test_log_show_diff_non_ascii(self):
# Smoke test for bug #328007 UnicodeDecodeError on 'log -p'
More information about the bazaar-commits
mailing list