Mercurial > hg
changeset 34430:80215865d154
annotate: move annotatepair unit tests to a separate file
In upcoming patches the output is going to be significantly longer than it is
today, and doctests don't allow wrapping the output.
Differential Revision: https://phab.mercurial-scm.org/D896
author | Siddharth Agarwal <sid0@fb.com> |
---|---|
date | Mon, 02 Oct 2017 02:34:47 -0700 |
parents | b332c01247d8 |
children | 52e9310626a8 |
files | mercurial/context.py tests/test-annotate.py |
diffstat | 2 files changed, 76 insertions(+), 50 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/context.py Mon Oct 02 02:34:47 2017 -0700 +++ b/mercurial/context.py Mon Oct 02 02:34:47 2017 -0700 @@ -1112,56 +1112,7 @@ Additionally, if `skipchild` is True, replace all other lines with parent annotate data as well such that child is never blamed for any lines. - >>> oldfctx = b'old' - >>> p1fctx, p2fctx, childfctx = b'p1', b'p2', b'c' - >>> olddata = b'a\nb\n' - >>> p1data = b'a\nb\nc\n' - >>> p2data = b'a\nc\nd\n' - >>> childdata = b'a\nb2\nc\nc2\nd\n' - >>> diffopts = mdiff.diffopts() - - >>> def decorate(text, rev): - ... return ([(rev, i) for i in xrange(1, text.count(b'\n') + 1)], text) - - Basic usage: - - >>> oldann = decorate(olddata, oldfctx) - >>> p1ann = decorate(p1data, p1fctx) - >>> p1ann = _annotatepair([oldann], p1fctx, p1ann, False, diffopts) - >>> p1ann[0] - [('old', 1), ('old', 2), ('p1', 3)] - >>> p2ann = decorate(p2data, p2fctx) - >>> p2ann = _annotatepair([oldann], p2fctx, p2ann, False, diffopts) - >>> p2ann[0] - [('old', 1), ('p2', 2), ('p2', 3)] - - Test with multiple parents (note the difference caused by ordering): - - >>> childann = decorate(childdata, childfctx) - >>> childann = _annotatepair([p1ann, p2ann], childfctx, childann, False, - ... diffopts) - >>> childann[0] - [('old', 1), ('c', 2), ('p2', 2), ('c', 4), ('p2', 3)] - - >>> childann = decorate(childdata, childfctx) - >>> childann = _annotatepair([p2ann, p1ann], childfctx, childann, False, - ... diffopts) - >>> childann[0] - [('old', 1), ('c', 2), ('p1', 3), ('c', 4), ('p2', 3)] - - Test with skipchild (note the difference caused by ordering): - - >>> childann = decorate(childdata, childfctx) - >>> childann = _annotatepair([p1ann, p2ann], childfctx, childann, True, - ... diffopts) - >>> childann[0] - [('old', 1), ('old', 2), ('p2', 2), ('p2', 2), ('p2', 3)] - - >>> childann = decorate(childdata, childfctx) - >>> childann = _annotatepair([p2ann, p1ann], childfctx, childann, True, - ... diffopts) - >>> childann[0] - [('old', 1), ('old', 2), ('p1', 3), ('p1', 3), ('p2', 3)] + See test-annotate.py for unit tests. ''' pblocks = [(parent, mdiff.allblocks(parent[1], child[1], opts=diffopts)) for parent in parents]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-annotate.py Mon Oct 02 02:34:47 2017 -0700 @@ -0,0 +1,75 @@ +from __future__ import absolute_import +from __future__ import print_function + +import unittest + +from mercurial import ( + mdiff, +) +from mercurial.context import ( + _annotatepair, +) + +class AnnotateTests(unittest.TestCase): + """Unit tests for annotate code.""" + + def testannotatepair(self): + self.maxDiff = None # camelcase-required + + oldfctx = b'old' + p1fctx, p2fctx, childfctx = b'p1', b'p2', b'c' + olddata = b'a\nb\n' + p1data = b'a\nb\nc\n' + p2data = b'a\nc\nd\n' + childdata = b'a\nb2\nc\nc2\nd\n' + diffopts = mdiff.diffopts() + + def decorate(text, rev): + return ([(rev, i) for i in xrange(1, text.count(b'\n') + 1)], text) + + # Basic usage + + oldann = decorate(olddata, oldfctx) + p1ann = decorate(p1data, p1fctx) + p1ann = _annotatepair([oldann], p1fctx, p1ann, False, diffopts) + self.assertEqual(p1ann[0], [('old', 1), ('old', 2), ('p1', 3)]) + + p2ann = decorate(p2data, p2fctx) + p2ann = _annotatepair([oldann], p2fctx, p2ann, False, diffopts) + self.assertEqual(p2ann[0], [('old', 1), ('p2', 2), ('p2', 3)]) + + # Test with multiple parents (note the difference caused by ordering) + + childann = decorate(childdata, childfctx) + childann = _annotatepair([p1ann, p2ann], childfctx, childann, False, + diffopts) + self.assertEqual(childann[0], + [('old', 1), ('c', 2), ('p2', 2), ('c', 4), ('p2', 3)] + ) + + childann = decorate(childdata, childfctx) + childann = _annotatepair([p2ann, p1ann], childfctx, childann, False, + diffopts) + self.assertEqual(childann[0], + [('old', 1), ('c', 2), ('p1', 3), ('c', 4), ('p2', 3)] + ) + + # Test with skipchild (note the difference caused by ordering) + + childann = decorate(childdata, childfctx) + childann = _annotatepair([p1ann, p2ann], childfctx, childann, True, + diffopts) + self.assertEqual(childann[0], + [('old', 1), ('old', 2), ('p2', 2), ('p2', 2), ('p2', 3)] + ) + + childann = decorate(childdata, childfctx) + childann = _annotatepair([p2ann, p1ann], childfctx, childann, True, + diffopts) + self.assertEqual(childann[0], + [('old', 1), ('old', 2), ('p1', 3), ('p1', 3), ('p2', 3)] + ) + +if __name__ == '__main__': + import silenttestrunner + silenttestrunner.main(__name__)