Files
rdkit/Code/cmake/Modules/fixup_coverage.py
Brian Kelley 626f8b522d RDKit learns how to compute code coverage for tests
To use code coverage:

cmake -DCMAKE_BUILD_TYPE=Debug \
      -DRDK_USE_FLEXBISON=ON \
      -DRDK_TEST_COVERAGE=ON \
      <path to rdkit source tree>

make install
make RDKit_coverage

Note, when making RDKit_coverage, your python paths, (DY)LD_LIBRARY paths must be
set up correctly.  If any of the tests fail, the coverage generator will most
likely fail and certainly will not be complete.

Here is an example from my OSX Box (note, I set the install directory to rdkit_build via)
cmake -DCMAKE_INSTALL_PREFIX=`pwd`/rdkit_build \
    ...

RDBASE=<path to rdkit source>  DYLD_LIBRARY_PATH=`pwd`/rdkit_build/lib \
 PYTHONPATH=`pwd`/rdkit_build/lib/python2.7/site-packages \
 make RDKit_coverage

open coverage/index.html in a browser
2015-01-15 11:53:27 -05:00

35 lines
1015 B
Python

"""This file searches the source directory for BISON and FLEX files that
the coverage tool mistakenly finds in the build tree.
It replaces the paths with the ones from the source tree
n.b. if a file with the same name (i.e. sln.yy) is found twice
in the source tree, this will break"""
import os,sys
source_dir, info_file = sys.argv[1:3]
print source_dir, info_file
paths = {}
for root, dir, files in os.walk(source_dir):
for f in files:
paths[f] = paths.get(f, []) + [os.path.join(root, f)]
lines = open(info_file).readlines()
newlines = []
for line in lines:
if "SF:" in line:
fn = line.split("SF:")[-1].strip()
if not os.path.exists(fn):
print "Does not exist:", fn.strip()
head, rest = os.path.split(fn)
potential = paths[rest]
if len(potential) == 1:
line = "SF:"+potential[0]
else:
asdf
newlines.append(line)
open(info_file, 'w').write("\n".join(newlines))