comparison tests/test-annotate.py @ 34432:2e32c6a31cc7

annotate: introduce attr for storing per-line annotate data We're going to extend this a bit -- at first by simply adding whether this was a skipped child. We're well on our way to outgrowing tuples, though -- adding more and more fields to tuples becomes annoying very quickly. Differential Revision: https://phab.mercurial-scm.org/D898
author Siddharth Agarwal <sid0@fb.com>
date Mon, 02 Oct 2017 02:34:47 -0700
parents 80215865d154
children 2f5a135b2b04
comparison
equal deleted inserted replaced
34431:52e9310626a8 34432:2e32c6a31cc7
5 5
6 from mercurial import ( 6 from mercurial import (
7 mdiff, 7 mdiff,
8 ) 8 )
9 from mercurial.context import ( 9 from mercurial.context import (
10 annotateline,
10 _annotatepair, 11 _annotatepair,
11 ) 12 )
12 13
13 class AnnotateTests(unittest.TestCase): 14 class AnnotateTests(unittest.TestCase):
14 """Unit tests for annotate code.""" 15 """Unit tests for annotate code."""
23 p2data = b'a\nc\nd\n' 24 p2data = b'a\nc\nd\n'
24 childdata = b'a\nb2\nc\nc2\nd\n' 25 childdata = b'a\nb2\nc\nc2\nd\n'
25 diffopts = mdiff.diffopts() 26 diffopts = mdiff.diffopts()
26 27
27 def decorate(text, rev): 28 def decorate(text, rev):
28 return ([(rev, i) for i in xrange(1, text.count(b'\n') + 1)], text) 29 return ([annotateline(fctx=rev, lineno=i)
30 for i in xrange(1, text.count(b'\n') + 1)],
31 text)
29 32
30 # Basic usage 33 # Basic usage
31 34
32 oldann = decorate(olddata, oldfctx) 35 oldann = decorate(olddata, oldfctx)
33 p1ann = decorate(p1data, p1fctx) 36 p1ann = decorate(p1data, p1fctx)
34 p1ann = _annotatepair([oldann], p1fctx, p1ann, False, diffopts) 37 p1ann = _annotatepair([oldann], p1fctx, p1ann, False, diffopts)
35 self.assertEqual(p1ann[0], [('old', 1), ('old', 2), ('p1', 3)]) 38 self.assertEqual(p1ann[0], [
39 annotateline('old', 1),
40 annotateline('old', 2),
41 annotateline('p1', 3),
42 ])
36 43
37 p2ann = decorate(p2data, p2fctx) 44 p2ann = decorate(p2data, p2fctx)
38 p2ann = _annotatepair([oldann], p2fctx, p2ann, False, diffopts) 45 p2ann = _annotatepair([oldann], p2fctx, p2ann, False, diffopts)
39 self.assertEqual(p2ann[0], [('old', 1), ('p2', 2), ('p2', 3)]) 46 self.assertEqual(p2ann[0], [
47 annotateline('old', 1),
48 annotateline('p2', 2),
49 annotateline('p2', 3),
50 ])
40 51
41 # Test with multiple parents (note the difference caused by ordering) 52 # Test with multiple parents (note the difference caused by ordering)
42 53
43 childann = decorate(childdata, childfctx) 54 childann = decorate(childdata, childfctx)
44 childann = _annotatepair([p1ann, p2ann], childfctx, childann, False, 55 childann = _annotatepair([p1ann, p2ann], childfctx, childann, False,
45 diffopts) 56 diffopts)
46 self.assertEqual(childann[0], 57 self.assertEqual(childann[0], [
47 [('old', 1), ('c', 2), ('p2', 2), ('c', 4), ('p2', 3)] 58 annotateline('old', 1),
48 ) 59 annotateline('c', 2),
60 annotateline('p2', 2),
61 annotateline('c', 4),
62 annotateline('p2', 3),
63 ])
49 64
50 childann = decorate(childdata, childfctx) 65 childann = decorate(childdata, childfctx)
51 childann = _annotatepair([p2ann, p1ann], childfctx, childann, False, 66 childann = _annotatepair([p2ann, p1ann], childfctx, childann, False,
52 diffopts) 67 diffopts)
53 self.assertEqual(childann[0], 68 self.assertEqual(childann[0], [
54 [('old', 1), ('c', 2), ('p1', 3), ('c', 4), ('p2', 3)] 69 annotateline('old', 1),
55 ) 70 annotateline('c', 2),
71 annotateline('p1', 3),
72 annotateline('c', 4),
73 annotateline('p2', 3),
74 ])
56 75
57 # Test with skipchild (note the difference caused by ordering) 76 # Test with skipchild (note the difference caused by ordering)
58 77
59 childann = decorate(childdata, childfctx) 78 childann = decorate(childdata, childfctx)
60 childann = _annotatepair([p1ann, p2ann], childfctx, childann, True, 79 childann = _annotatepair([p1ann, p2ann], childfctx, childann, True,
61 diffopts) 80 diffopts)
62 self.assertEqual(childann[0], 81 self.assertEqual(childann[0], [
63 [('old', 1), ('old', 2), ('p2', 2), ('p2', 2), ('p2', 3)] 82 annotateline('old', 1),
64 ) 83 annotateline('old', 2),
84 annotateline('p2', 2),
85 annotateline('p2', 2),
86 annotateline('p2', 3),
87 ])
65 88
66 childann = decorate(childdata, childfctx) 89 childann = decorate(childdata, childfctx)
67 childann = _annotatepair([p2ann, p1ann], childfctx, childann, True, 90 childann = _annotatepair([p2ann, p1ann], childfctx, childann, True,
68 diffopts) 91 diffopts)
69 self.assertEqual(childann[0], 92 self.assertEqual(childann[0], [
70 [('old', 1), ('old', 2), ('p1', 3), ('p1', 3), ('p2', 3)] 93 annotateline('old', 1),
71 ) 94 annotateline('old', 2),
95 annotateline('p1', 3),
96 annotateline('p1', 3),
97 annotateline('p2', 3),
98 ])
72 99
73 if __name__ == '__main__': 100 if __name__ == '__main__':
74 import silenttestrunner 101 import silenttestrunner
75 silenttestrunner.main(__name__) 102 silenttestrunner.main(__name__)