test-annotate.py
104 lines
| 3.3 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, | ||||
) | ||||
from mercurial.context import ( | ||||
Siddharth Agarwal
|
r34433 | annotateline, | ||
Siddharth Agarwal
|
r34431 | _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): | ||||
Siddharth Agarwal
|
r34433 | return ([annotateline(fctx=rev, lineno=i) | ||
Pulkit Goyal
|
r35964 | for i in range(1, text.count(b'\n') + 1)], | ||
Siddharth Agarwal
|
r34433 | text) | ||
Siddharth Agarwal
|
r34431 | |||
# Basic usage | ||||
oldann = decorate(olddata, oldfctx) | ||||
p1ann = decorate(p1data, p1fctx) | ||||
p1ann = _annotatepair([oldann], p1fctx, p1ann, False, diffopts) | ||||
Siddharth Agarwal
|
r34433 | self.assertEqual(p1ann[0], [ | ||
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) | ||||
Siddharth Agarwal
|
r34433 | self.assertEqual(p2ann[0], [ | ||
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) | ||||
Siddharth Agarwal
|
r34433 | self.assertEqual(childann[0], [ | ||
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) | ||||
Siddharth Agarwal
|
r34433 | self.assertEqual(childann[0], [ | ||
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) | ||||
Siddharth Agarwal
|
r34433 | self.assertEqual(childann[0], [ | ||
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) | ||||
Siddharth Agarwal
|
r34433 | self.assertEqual(childann[0], [ | ||
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__) | ||||