Commit 40ddd709 authored by Stefan Behnel's avatar Stefan Behnel Committed by GitHub

Merge pull request #2784 from wjsi/master

Fix inconsistency between traced files and reported files
parents 99d27305 bd44de56
...@@ -74,7 +74,7 @@ class Plugin(CoveragePlugin): ...@@ -74,7 +74,7 @@ class Plugin(CoveragePlugin):
if c_file is None: if c_file is None:
c_file, py_file = self._find_source_files(filename) c_file, py_file = self._find_source_files(filename)
if not c_file: if not c_file:
return None return None # unknown file
# parse all source file paths and lines from C file # parse all source file paths and lines from C file
# to learn about all relevant source files right away (pyx/pxi/pxd) # to learn about all relevant source files right away (pyx/pxi/pxd)
...@@ -82,7 +82,9 @@ class Plugin(CoveragePlugin): ...@@ -82,7 +82,9 @@ class Plugin(CoveragePlugin):
# is not from the main .pyx file but a file with a different # is not from the main .pyx file but a file with a different
# name than the .c file (which prevents us from finding the # name than the .c file (which prevents us from finding the
# .c file) # .c file)
self._parse_lines(c_file, filename) _, code = self._parse_lines(c_file, filename)
if code is None:
return None # no source found
if self._file_path_map is None: if self._file_path_map is None:
self._file_path_map = {} self._file_path_map = {}
......
# mode: run
# tag: coverage,trace
"""
PYTHON setup.py build_ext -i
PYTHON -c "import shutil; shutil.move('ext_src/ext_pkg', 'ext_pkg')"
PYTHON -m coverage run coverage_test.py
PYTHON -m coverage report
"""
######## setup.py ########
from distutils.core import setup, Extension
from Cython.Build import cythonize
setup(ext_modules = cythonize([
'pkg/*.pyx',
]))
setup(
name='ext_pkg',
package_dir={'': 'ext_src'},
ext_modules = cythonize([
Extension('ext_pkg._mul', ['ext_src/ext_pkg/mul.py'])
]),
)
######## .coveragerc ########
[run]
plugins = Cython.Coverage
######## pkg/__init__.py ########
from .test_ext_import import test_add
######## pkg/test_ext_import.pyx ########
# cython: linetrace=True
# distutils: define_macros=CYTHON_TRACE=1
import ext_pkg
cpdef test_add(int a, int b):
return a + ext_pkg.test_mul(b, 2)
######## ext_src/ext_pkg/__init__.py ########
from .mul import test_mul
######## ext_src/ext_pkg/mul.py ########
from __future__ import absolute_import
def test_mul(a, b):
return a * b
try:
from ._mul import *
except ImportError:
pass
######## coverage_test.py ########
from pkg import test_add
assert 5 == test_add(1, 2)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment