mirror of
https://github.com/python/cpython.git
synced 2025-01-27 03:24:35 +08:00
Merged revisions 84994 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r84994 | alexander.belopolsky | 2010-09-24 14:03:12 -0400 (Fri, 24 Sep 2010) | 1 line Issue #9936: Fixed executable lines' search in the trace module. ........
This commit is contained in:
parent
a4c8ecd32e
commit
402392bd5a
@ -166,7 +166,6 @@ class TestLineCounts(unittest.TestCase):
|
||||
}
|
||||
self.assertEqual(tracer.results().counts, expected)
|
||||
|
||||
|
||||
class TestRunExecCounts(unittest.TestCase):
|
||||
"""A simple sanity test of line-counting, via runctx (exec)"""
|
||||
def setUp(self):
|
||||
@ -263,8 +262,9 @@ class TestCoverage(unittest.TestCase):
|
||||
rmtree(TESTFN)
|
||||
unlink(TESTFN)
|
||||
|
||||
def _coverage(self, tracer):
|
||||
tracer.run('from test import test_pprint; test_pprint.test_main()')
|
||||
def _coverage(self, tracer,
|
||||
cmd='from test import test_pprint; test_pprint.test_main()'):
|
||||
tracer.run(cmd)
|
||||
r = tracer.results()
|
||||
r.write_results(show_missing=True, summary=True, coverdir=TESTFN)
|
||||
|
||||
@ -291,6 +291,25 @@ class TestCoverage(unittest.TestCase):
|
||||
files = os.listdir(TESTFN)
|
||||
self.assertEquals(files, [])
|
||||
|
||||
def test_issue9936(self):
|
||||
tracer = trace.Trace(trace=0, count=1)
|
||||
modname = 'test.tracedmodules.testmod'
|
||||
# Ensure that the module is executed in import
|
||||
if modname in sys.modules:
|
||||
del sys.modules[modname]
|
||||
cmd = ("import test.tracedmodules.testmod as t;"
|
||||
"t.func(0); t.func2();")
|
||||
with captured_stdout() as stdout:
|
||||
self._coverage(tracer, cmd)
|
||||
stdout.seek(0)
|
||||
stdout.readline()
|
||||
coverage = {}
|
||||
for line in stdout:
|
||||
lines, cov, module = line.split()[:3]
|
||||
coverage[module] = (int(lines), int(cov[:-1]))
|
||||
self.assertIn(modname, coverage)
|
||||
self.assertEqual(coverage[modname], (5, 100))
|
||||
|
||||
|
||||
def test_main():
|
||||
run_unittest(__name__)
|
||||
|
@ -1,3 +1,9 @@
|
||||
def func(x):
|
||||
b = x + 1
|
||||
return b + 2
|
||||
|
||||
def func2():
|
||||
"""Test function for issue 9936 """
|
||||
return (1,
|
||||
2,
|
||||
3)
|
||||
|
10
Lib/trace.py
10
Lib/trace.py
@ -59,7 +59,7 @@ import token
|
||||
import tokenize
|
||||
import inspect
|
||||
import gc
|
||||
|
||||
import dis
|
||||
import pickle
|
||||
|
||||
def usage(outfile):
|
||||
@ -376,13 +376,7 @@ def find_lines_from_code(code, strs):
|
||||
"""Return dict where keys are lines in the line number table."""
|
||||
linenos = {}
|
||||
|
||||
line_increments = code.co_lnotab[1::2]
|
||||
table_length = len(line_increments)
|
||||
docstring = False
|
||||
|
||||
lineno = code.co_firstlineno
|
||||
for li in line_increments:
|
||||
lineno += li
|
||||
for _, lineno in dis.findlinestarts(code):
|
||||
if lineno not in strs:
|
||||
linenos[lineno] = 1
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user