test-annotate.py
110 lines
| 3.5 KiB
| text/x-python
|
PythonLexer
/ tests / test-annotate.py
Siddharth Agarwal
|
r34431 | from __future__ import absolute_import | ||
from __future__ import print_function | ||||
import unittest | ||||
from mercurial import ( | ||||
mdiff, | ||||
Yuya Nishihara
|
r37082 | pycompat, | ||
Siddharth Agarwal
|
r34431 | ) | ||
Yuya Nishihara
|
r36935 | from mercurial.dagop import ( | ||
Siddharth Agarwal
|
r34433 | annotateline, | ||
Yuya Nishihara
|
r37082 | _annotatedfile, | ||
Siddharth Agarwal
|
r34431 | _annotatepair, | ||
) | ||||
Yuya Nishihara
|
r37082 | def tr(a): | ||
return [annotateline(fctx, lineno, skip) | ||||
for fctx, lineno, skip in zip(a.fctxs, a.linenos, a.skips)] | ||||
Siddharth Agarwal
|
r34431 | 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() | ||||
Yuya Nishihara
|
r36953 | def decorate(text, fctx): | ||
Yuya Nishihara
|
r37082 | n = text.count(b'\n') | ||
linenos = pycompat.rangelist(1, n + 1) | ||||
return _annotatedfile([fctx] * n, linenos, [False] * n, text) | ||||
Siddharth Agarwal
|
r34431 | |||
# Basic usage | ||||
oldann = decorate(olddata, oldfctx) | ||||
p1ann = decorate(p1data, p1fctx) | ||||
p1ann = _annotatepair([oldann], p1fctx, p1ann, False, diffopts) | ||||
Yuya Nishihara
|
r37082 | self.assertEqual(tr(p1ann), [ | ||
Pulkit Goyal
|
r35965 | annotateline(b'old', 1), | ||
annotateline(b'old', 2), | ||||
annotateline(b'p1', 3), | ||||
Siddharth Agarwal
|
r34433 | ]) | ||
Siddharth Agarwal
|
r34431 | |||
p2ann = decorate(p2data, p2fctx) | ||||
p2ann = _annotatepair([oldann], p2fctx, p2ann, False, diffopts) | ||||
Yuya Nishihara
|
r37082 | self.assertEqual(tr(p2ann), [ | ||
Pulkit Goyal
|
r35965 | annotateline(b'old', 1), | ||
annotateline(b'p2', 2), | ||||
annotateline(b'p2', 3), | ||||
Siddharth Agarwal
|
r34433 | ]) | ||
Siddharth Agarwal
|
r34431 | |||
# Test with multiple parents (note the difference caused by ordering) | ||||
childann = decorate(childdata, childfctx) | ||||
childann = _annotatepair([p1ann, p2ann], childfctx, childann, False, | ||||
diffopts) | ||||
Yuya Nishihara
|
r37082 | self.assertEqual(tr(childann), [ | ||
Pulkit Goyal
|
r35965 | annotateline(b'old', 1), | ||
annotateline(b'c', 2), | ||||
annotateline(b'p2', 2), | ||||
annotateline(b'c', 4), | ||||
annotateline(b'p2', 3), | ||||
Siddharth Agarwal
|
r34433 | ]) | ||
Siddharth Agarwal
|
r34431 | |||
childann = decorate(childdata, childfctx) | ||||
childann = _annotatepair([p2ann, p1ann], childfctx, childann, False, | ||||
diffopts) | ||||
Yuya Nishihara
|
r37082 | self.assertEqual(tr(childann), [ | ||
Pulkit Goyal
|
r35965 | annotateline(b'old', 1), | ||
annotateline(b'c', 2), | ||||
annotateline(b'p1', 3), | ||||
annotateline(b'c', 4), | ||||
annotateline(b'p2', 3), | ||||
Siddharth Agarwal
|
r34433 | ]) | ||
Siddharth Agarwal
|
r34431 | |||
# Test with skipchild (note the difference caused by ordering) | ||||
childann = decorate(childdata, childfctx) | ||||
childann = _annotatepair([p1ann, p2ann], childfctx, childann, True, | ||||
diffopts) | ||||
Yuya Nishihara
|
r37082 | self.assertEqual(tr(childann), [ | ||
Pulkit Goyal
|
r35965 | annotateline(b'old', 1), | ||
annotateline(b'old', 2, True), | ||||
Siddharth Agarwal
|
r34434 | # note that this line was carried over from earlier so it is *not* | ||
# marked skipped | ||||
Pulkit Goyal
|
r35965 | annotateline(b'p2', 2), | ||
annotateline(b'p2', 2, True), | ||||
annotateline(b'p2', 3), | ||||
Siddharth Agarwal
|
r34433 | ]) | ||
Siddharth Agarwal
|
r34431 | |||
childann = decorate(childdata, childfctx) | ||||
childann = _annotatepair([p2ann, p1ann], childfctx, childann, True, | ||||
diffopts) | ||||
Yuya Nishihara
|
r37082 | self.assertEqual(tr(childann), [ | ||
Pulkit Goyal
|
r35965 | annotateline(b'old', 1), | ||
annotateline(b'old', 2, True), | ||||
annotateline(b'p1', 3), | ||||
annotateline(b'p1', 3, True), | ||||
annotateline(b'p2', 3), | ||||
Siddharth Agarwal
|
r34433 | ]) | ||
Siddharth Agarwal
|
r34431 | |||
if __name__ == '__main__': | ||||
import silenttestrunner | ||||
silenttestrunner.main(__name__) | ||||