summaryrefslogtreecommitdiff
path: root/tests/test_oddball.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_oddball.py')
-rw-r--r--tests/test_oddball.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/test_oddball.py b/tests/test_oddball.py
index 8f9e9707..87c65b0e 100644
--- a/tests/test_oddball.py
+++ b/tests/test_oddball.py
@@ -410,6 +410,46 @@ class GettraceTest(CoverageTest):
''',
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], "")
+ def test_setting_new_trace_function(self):
+ # https://bitbucket.org/ned/coveragepy/issues/436/disabled-coverage-ctracer-may-rise-from
+ self.check_coverage('''\
+ import sys
+
+ def tracer(frame, event, arg):
+ print("%s: %s @ %d" % (event, frame.f_code.co_filename, frame.f_lineno))
+ return tracer
+
+ def begin():
+ sys.settrace(tracer)
+
+ def collect():
+ t = sys.gettrace()
+ assert t is tracer, t
+
+ def test_unsets_trace():
+ begin()
+ collect()
+
+ old = sys.gettrace()
+ test_unsets_trace()
+ sys.settrace(old)
+ ''',
+ lines=[1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 20],
+ missing="4-5, 11-12",
+ )
+
+ out = self.stdout().replace(self.last_module_name, "coverage_test")
+
+ self.assertEqual(
+ out,
+ (
+ "call: coverage_test.py @ 10\n"
+ "line: coverage_test.py @ 11\n"
+ "line: coverage_test.py @ 12\n"
+ "return: coverage_test.py @ 12\n"
+ ),
+ )
+
class ExecTest(CoverageTest):
"""Tests of exec."""