Issue 3821: trace module bug when using --missing (original) (raw)

I get the following exception:

$ /opt/python3.0b2/bin/python3.0 -m trace -c -m run.py Traceback (most recent call last): File "/opt/python3.0b2/lib/python3.0/runpy.py", line 121, in _run_module_as_main "main", fname, loader, pkg_name) File "/opt/python3.0b2/lib/python3.0/runpy.py", line 34, in _run_code exec(code, run_globals) File "/opt/python3.0b2/lib/python3.0/trace.py", line 809, in main() File "/opt/python3.0b2/lib/python3.0/trace.py", line 806, in main results.write_results(missing, summary=summary, coverdir=coverdir) File "/opt/python3.0b2/lib/python3.0/trace.py", line 303, in write_results lnotab = find_executable_linenos(filename) File "/opt/python3.0b2/lib/python3.0/trace.py", line 428, in find_executable_linenos return find_lines(code, strs) File "/opt/python3.0b2/lib/python3.0/trace.py", line 392, in find_lines linenos.update(find_lines(c, strs)) File "/opt/python3.0b2/lib/python3.0/trace.py", line 386, in find_lines linenos = find_lines_from_code(code, strs) File "/opt/python3.0b2/lib/python3.0/trace.py", line 370, in find_lines_from_code line_increments = [ord(c) for c in code.co_lnotab[1::2]] File "/opt/python3.0b2/lib/python3.0/trace.py", line 370, in line_increments = [ord(c) for c in code.co_lnotab[1::2]] TypeError: ord() expected string of length 1, but int found

I think that line 370 of trace.py should say:

line_increments = [int(c) for c in code.co_lnotab[1::2]]

instead of:

line_increments = [ord(c) for c in code.co_lnotab[1::2]]

TestCoverage.test_coverage_ignore fails when running in verbose mode ("python regrtest.py -v test_trace", or directly "python test_trace.py"), because it attempts to compare stdout.getvalue() with the empty string, while verbose places output there.

I will fix it as part of my merge with the larger test_trace.py for issue 9315.