##// END OF EJS Templates
tests: finally fix up test-fuzz-targets.t...
tests: finally fix up test-fuzz-targets.t It's been failing on my workstation for a while, since I have a new enough LLVM that I had the fuzzer goo, but not so new that I actually had FuzzedDataProvider. This is a better solution all around in my opinion. I _believe_ this should let us run these tests on most systems, even those using GCC instead of clang. That said, my one attempt to test this on my macOS laptop failed miserably, and I don't feel like doing more work on this right now. Differential Revision: https://phab.mercurial-scm.org/D7566

File last commit:

r43346:2372284d default
r44267:19da643d default
Show More
test-annotate.py
138 lines | 3.8 KiB | text/x-python | PythonLexer
Siddharth Agarwal
annotate: move annotatepair unit tests to a separate file...
r34431 from __future__ import absolute_import
from __future__ import print_function
import unittest
from mercurial import (
mdiff,
Yuya Nishihara
annotate: do not construct attr.s object per line while computing history...
r37082 pycompat,
Siddharth Agarwal
annotate: move annotatepair unit tests to a separate file...
r34431 )
Yuya Nishihara
dagop: move annotateline and _annotatepair from context.py...
r36935 from mercurial.dagop import (
Siddharth Agarwal
annotate: introduce attr for storing per-line annotate data...
r34433 annotateline,
Yuya Nishihara
annotate: do not construct attr.s object per line while computing history...
r37082 _annotatedfile,
Siddharth Agarwal
annotate: move annotatepair unit tests to a separate file...
r34431 _annotatepair,
)
Augie Fackler
formatting: blacken the codebase...
r43346
Yuya Nishihara
annotate: do not construct attr.s object per line while computing history...
r37082 def tr(a):
Augie Fackler
formatting: blacken the codebase...
r43346 return [
annotateline(fctx, lineno, skip)
for fctx, lineno, skip in zip(a.fctxs, a.linenos, a.skips)
]
Yuya Nishihara
annotate: do not construct attr.s object per line while computing history...
r37082
Siddharth Agarwal
annotate: move annotatepair unit tests to a separate file...
r34431 class AnnotateTests(unittest.TestCase):
"""Unit tests for annotate code."""
def testannotatepair(self):
Augie Fackler
formatting: blacken the codebase...
r43346 self.maxDiff = None # camelcase-required
Siddharth Agarwal
annotate: move annotatepair unit tests to a separate file...
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
annotate: correct parameter name of decorate() function
r36953 def decorate(text, fctx):
Yuya Nishihara
annotate: do not construct attr.s object per line while computing history...
r37082 n = text.count(b'\n')
linenos = pycompat.rangelist(1, n + 1)
return _annotatedfile([fctx] * n, linenos, [False] * n, text)
Siddharth Agarwal
annotate: move annotatepair unit tests to a separate file...
r34431
# Basic usage
oldann = decorate(olddata, oldfctx)
p1ann = decorate(p1data, p1fctx)
p1ann = _annotatepair([oldann], p1fctx, p1ann, False, diffopts)
Augie Fackler
formatting: blacken the codebase...
r43346 self.assertEqual(
tr(p1ann),
[
annotateline(b'old', 1),
annotateline(b'old', 2),
annotateline(b'p1', 3),
],
)
Siddharth Agarwal
annotate: move annotatepair unit tests to a separate file...
r34431
p2ann = decorate(p2data, p2fctx)
p2ann = _annotatepair([oldann], p2fctx, p2ann, False, diffopts)
Augie Fackler
formatting: blacken the codebase...
r43346 self.assertEqual(
tr(p2ann),
[
annotateline(b'old', 1),
annotateline(b'p2', 2),
annotateline(b'p2', 3),
],
)
Siddharth Agarwal
annotate: move annotatepair unit tests to a separate file...
r34431
# Test with multiple parents (note the difference caused by ordering)
childann = decorate(childdata, childfctx)
Augie Fackler
formatting: blacken the codebase...
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
annotate: move annotatepair unit tests to a separate file...
r34431
childann = decorate(childdata, childfctx)
Augie Fackler
formatting: blacken the codebase...
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
annotate: move annotatepair unit tests to a separate file...
r34431
# Test with skipchild (note the difference caused by ordering)
childann = decorate(childdata, childfctx)
Augie Fackler
formatting: blacken the codebase...
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
annotate: move annotatepair unit tests to a separate file...
r34431
childann = decorate(childdata, childfctx)
Augie Fackler
formatting: blacken the codebase...
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
annotate: move annotatepair unit tests to a separate file...
r34431
if __name__ == '__main__':
import silenttestrunner
Augie Fackler
formatting: blacken the codebase...
r43346
Siddharth Agarwal
annotate: move annotatepair unit tests to a separate file...
r34431 silenttestrunner.main(__name__)