summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/coveragetest.py12
-rw-r--r--tests/test_arcs.py21
2 files changed, 28 insertions, 5 deletions
diff --git a/tests/coveragetest.py b/tests/coveragetest.py
index d673f6d6..cf3d2474 100644
--- a/tests/coveragetest.py
+++ b/tests/coveragetest.py
@@ -149,7 +149,8 @@ class CoverageTest(
def check_coverage(
self, text, lines=None, missing="", report="",
excludes=None, partials="",
- arcz=None, arcz_missing="", arcz_unpredicted=""
+ arcz=None, arcz_missing=None, arcz_unpredicted=None,
+ arcs=None, arcs_missing=None, arcs_unpredicted=None,
):
"""Check the coverage measurement of `text`.
@@ -172,11 +173,12 @@ class CoverageTest(
self.make_file(modname+".py", text)
- arcs = arcs_missing = arcs_unpredicted = None
- if arcz is not None:
+ if arcs is None and arcz is not None:
arcs = self.arcz_to_arcs(arcz)
- arcs_missing = self.arcz_to_arcs(arcz_missing or "")
- arcs_unpredicted = self.arcz_to_arcs(arcz_unpredicted or "")
+ if arcs_missing is None and arcz_missing is not None:
+ arcs_missing = self.arcz_to_arcs(arcz_missing)
+ if arcs_unpredicted is None and arcz_unpredicted is not None:
+ arcs_unpredicted = self.arcz_to_arcs(arcz_unpredicted)
# Start up Coverage.
cov = coverage.coverage(branch=(arcs_missing is not None))
diff --git a/tests/test_arcs.py b/tests/test_arcs.py
index d3717a88..42e10510 100644
--- a/tests/test_arcs.py
+++ b/tests/test_arcs.py
@@ -575,6 +575,27 @@ class MiscArcTest(CoverageTest):
""",
arcz=".1 19 9.")
+ def test_pathologically_long_code_object(self):
+ # https://bitbucket.org/ned/coveragepy/issue/359
+ # The structure of this file is such that an EXTENDED_ARG byte code is
+ # needed to encode the jump at the end. We weren't interpreting those
+ # opcodes.
+ code = """\
+ data = [
+ """ + "".join("""\
+ [{i}, {i}, {i}, {i}, {i}, {i}, {i}, {i}, {i}, {i}],
+ """.format(i=i) for i in range(2000)
+ ) + """\
+ ]
+
+ if __name__ == "__main__":
+ print(len(data))
+ """
+ self.check_coverage(
+ code,
+ arcs=[(-1, 1), (1, 2004), (2004, -2), (2004, 2005), (2005, -2)],
+ )
+
class ExcludeTest(CoverageTest):
"""Tests of exclusions to indicate known partial branches."""