test-annotate.py
138 lines
| 3.8 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, | ||
) | ||||
Augie Fackler
|
r43346 | |||
Yuya Nishihara
|
r37082 | def tr(a): | ||
Augie Fackler
|
r43346 | return [ | ||
annotateline(fctx, lineno, skip) | ||||
for fctx, lineno, skip in zip(a.fctxs, a.linenos, a.skips) | ||||
] | ||||
Yuya Nishihara
|
r37082 | |||
Siddharth Agarwal
|
r34431 | class AnnotateTests(unittest.TestCase): | ||
"""Unit tests for annotate code.""" | ||||
def testannotatepair(self): | ||||
Augie Fackler
|
r43346 | self.maxDiff = None # camelcase-required | ||
Siddharth Agarwal
|
r34431 | |||
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) | ||||
Augie Fackler
|
r43346 | self.assertEqual( | ||
tr(p1ann), | ||||
[ | ||||
annotateline(b'old', 1), | ||||
annotateline(b'old', 2), | ||||
annotateline(b'p1', 3), | ||||
], | ||||
) | ||||
Siddharth Agarwal
|
r34431 | |||
p2ann = decorate(p2data, p2fctx) | ||||
p2ann = _annotatepair([oldann], p2fctx, p2ann, False, diffopts) | ||||
Augie Fackler
|
r43346 | self.assertEqual( | ||
tr(p2ann), | ||||
[ | ||||
annotateline(b'old', 1), | ||||
annotateline(b'p2', 2), | ||||
annotateline(b'p2', 3), | ||||
], | ||||
) | ||||
Siddharth Agarwal
|
r34431 | |||
# Test with multiple parents (note the difference caused by ordering) | ||||
childann = decorate(childdata, childfctx) | ||||
Augie Fackler
|
r43346 | childann = _annotatepair( | ||
[p1ann, p2ann], childfctx, childann, False, diffopts | ||||
) | ||||
self.assertEqual( | ||||
tr(childann), | ||||
[ | ||||
annotateline(b'old', 1), | ||||
annotateline(b'c', 2), | ||||
annotateline(b'p2', 2), | ||||
annotateline(b'c', 4), | ||||
annotateline(b'p2', 3), | ||||
], | ||||
) | ||||
Siddharth Agarwal
|
r34431 | |||
childann = decorate(childdata, childfctx) | ||||
Augie Fackler
|
r43346 | childann = _annotatepair( | ||
[p2ann, p1ann], childfctx, childann, False, diffopts | ||||
) | ||||
self.assertEqual( | ||||
tr(childann), | ||||
[ | ||||
annotateline(b'old', 1), | ||||
annotateline(b'c', 2), | ||||
annotateline(b'p1', 3), | ||||
annotateline(b'c', 4), | ||||
annotateline(b'p2', 3), | ||||
], | ||||
) | ||||
Siddharth Agarwal
|
r34431 | |||
# Test with skipchild (note the difference caused by ordering) | ||||
childann = decorate(childdata, childfctx) | ||||
Augie Fackler
|
r43346 | childann = _annotatepair( | ||
[p1ann, p2ann], childfctx, childann, True, diffopts | ||||
) | ||||
self.assertEqual( | ||||
tr(childann), | ||||
[ | ||||
annotateline(b'old', 1), | ||||
annotateline(b'old', 2, True), | ||||
# note that this line was carried over from earlier so it is *not* | ||||
# marked skipped | ||||
annotateline(b'p2', 2), | ||||
annotateline(b'p2', 2, True), | ||||
annotateline(b'p2', 3), | ||||
], | ||||
) | ||||
Siddharth Agarwal
|
r34431 | |||
childann = decorate(childdata, childfctx) | ||||
Augie Fackler
|
r43346 | childann = _annotatepair( | ||
[p2ann, p1ann], childfctx, childann, True, diffopts | ||||
) | ||||
self.assertEqual( | ||||
tr(childann), | ||||
[ | ||||
annotateline(b'old', 1), | ||||
annotateline(b'old', 2, True), | ||||
annotateline(b'p1', 3), | ||||
annotateline(b'p1', 3, True), | ||||
annotateline(b'p2', 3), | ||||
], | ||||
) | ||||
Siddharth Agarwal
|
r34431 | |||
if __name__ == '__main__': | ||||
import silenttestrunner | ||||
Augie Fackler
|
r43346 | |||
Siddharth Agarwal
|
r34431 | silenttestrunner.main(__name__) | ||