summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorAlexander Belopolsky <alexander.belopolsky@gmail.com>2014-06-29 21:44:05 (GMT)
committerAlexander Belopolsky <alexander.belopolsky@gmail.com>2014-06-29 21:44:05 (GMT)
commitf026dae130bf6f9015c4b212f16852ba4a3f3dec (patch)
treef3cef557d7c98cf965688901d63bb2d3cd705b8d /Lib
parent15c6ed52390cade3b070bf4b7097cb1d121d9dac (diff)
downloadcpython-f026dae130bf6f9015c4b212f16852ba4a3f3dec.zip
cpython-f026dae130bf6f9015c4b212f16852ba4a3f3dec.tar.gz
cpython-f026dae130bf6f9015c4b212f16852ba4a3f3dec.tar.bz2
Fixes #10541: regrtest -T is broken
* makes test_trace tests restore the tracefunc after they run * write_results() in trace module will not terminate if lnotab cannot be found.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/test_trace.py6
-rwxr-xr-xLib/trace.py19
2 files changed, 15 insertions, 10 deletions
diff --git a/Lib/test/test_trace.py b/Lib/test/test_trace.py
index 1cec710..05bf274 100644
--- a/Lib/test/test_trace.py
+++ b/Lib/test/test_trace.py
@@ -10,7 +10,6 @@ from trace import CoverageResults, Trace
from test.tracedmodules import testmod
-
#------------------------------- Utilities -----------------------------------#
def fix_ext_py(filename):
@@ -224,6 +223,11 @@ class TestFuncs(unittest.TestCase):
self.addCleanup(sys.settrace, sys.gettrace())
self.tracer = Trace(count=0, trace=0, countfuncs=1)
self.filemod = my_file_and_modname()
+ self._saved_tracefunc = sys.gettrace()
+
+ def tearDown(self):
+ if self._saved_tracefunc is not None:
+ sys.settrace(self._saved_tracefunc)
def test_simple_caller(self):
self.tracer.runfunc(traced_func_simple_caller, 1)
diff --git a/Lib/trace.py b/Lib/trace.py
index 09fe9ee..1c888ac 100755
--- a/Lib/trace.py
+++ b/Lib/trace.py
@@ -326,16 +326,17 @@ class CoverageResults:
lnotab = _find_executable_linenos(filename)
else:
lnotab = {}
+ if lnotab:
+ source = linecache.getlines(filename)
+ coverpath = os.path.join(dir, modulename + ".cover")
+ with open(filename, 'rb') as fp:
+ encoding, _ = tokenize.detect_encoding(fp.readline)
+ n_hits, n_lines = self.write_results_file(coverpath, source,
+ lnotab, count, encoding)
+ if summary and n_lines:
+ percent = int(100 * n_hits / n_lines)
+ sums[modulename] = n_lines, percent, modulename, filename
- source = linecache.getlines(filename)
- coverpath = os.path.join(dir, modulename + ".cover")
- with open(filename, 'rb') as fp:
- encoding, _ = tokenize.detect_encoding(fp.readline)
- n_hits, n_lines = self.write_results_file(coverpath, source,
- lnotab, count, encoding)
- if summary and n_lines:
- percent = int(100 * n_hits / n_lines)
- sums[modulename] = n_lines, percent, modulename, filename
if summary and sums:
print("lines cov% module (path)")