summaryrefslogtreecommitdiff
path: root/tests/test_arcs.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2015-02-17 07:35:01 -0500
committerNed Batchelder <ned@nedbatchelder.com>2015-02-17 07:35:01 -0500
commit0155f1f0619640cce45dd2a3ace367e04c4eb0d2 (patch)
treeb99c17a1ec4001c25b249002d054d77c10ac90ca /tests/test_arcs.py
parent318033bec0bfde3f09304294a3c3fec70ae26057 (diff)
downloadpython-coveragepy-0155f1f0619640cce45dd2a3ace367e04c4eb0d2.tar.gz
Properly handle crazy-long code objects. #359
Diffstat (limited to 'tests/test_arcs.py')
-rw-r--r--tests/test_arcs.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/test_arcs.py b/tests/test_arcs.py
index d3717a8..42e1051 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."""