mirror of
https://github.com/python/cpython.git
synced 2025-07-24 03:35:53 +00: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
2c7d6859a4
commit
517185edcb
4 changed files with 32 additions and 11 deletions
|
@ -186,7 +186,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):
|
||||
|
@ -283,8 +282,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)
|
||||
|
||||
|
@ -311,6 +311,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
|
@ -58,7 +58,7 @@ import token
|
|||
import tokenize
|
||||
import inspect
|
||||
import gc
|
||||
|
||||
import dis
|
||||
try:
|
||||
import cPickle
|
||||
pickle = cPickle
|
||||
|
@ -379,13 +379,7 @@ def find_lines_from_code(code, strs):
|
|||
"""Return dict where keys are lines in the line number table."""
|
||||
linenos = {}
|
||||
|
||||
line_increments = [ord(c) for c in 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
|
||||
|
||||
|
|
|
@ -43,6 +43,8 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #9936: Fixed executable lines' search in the trace module.
|
||||
|
||||
- Issue #9928: Properly initialize the types exported by the bz2 module.
|
||||
|
||||
- Issue #9854: The default read() implementation in io.RawIOBase now
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue