mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 00:14:35 +03:00
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
This commit is contained in:
parent
3a77727405
commit
87602d16ba
@ -1112,56 +1112,7 @@ def _annotatepair(parents, childfctx, child, skipchild, diffopts):
|
||||
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]
|
||||
|
75
tests/test-annotate.py
Normal file
75
tests/test-annotate.py
Normal file
@ -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__)
|
Loading…
Reference in New Issue
Block a user