mirror of
https://github.com/rdkit/rdkit.git
synced 2026-06-04 21:54:27 +08:00
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
35 lines
1015 B
Python
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))
|
|
|
|
|