diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2015-11-01 21:28:31 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2015-11-01 21:28:31 -0500 |
commit | dbaa663f9916c28e5fec55de3e61265bcce26baa (patch) | |
tree | bdb9ffddda1e2ffc2213a6f3ef2a504d5e64a021 /tests/test_oddball.py | |
parent | 2a546830a4e0f55b0c4d03625be21862e33e3f07 (diff) | |
download | python-coveragepy-git-dbaa663f9916c28e5fec55de3e61265bcce26baa.tar.gz |
Fix settrace(py_func). #436.
Diffstat (limited to 'tests/test_oddball.py')
-rw-r--r-- | tests/test_oddball.py | 40 |
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.""" |