These changes make it unnecessary to copy header files around during the build process, which tends to confuse IDEs and debuggers. The headers which comprise Cantera's external C++ interface are now in the 'include' directory. All of the samples and demos are now in the 'samples' subdirectory.
84 lines
1.7 KiB
Python
Executable file
84 lines
1.7 KiB
Python
Executable file
#!/usr/bin/python
|
|
|
|
"""
|
|
Collect test coverage data and generate an html report.
|
|
"""
|
|
|
|
import os
|
|
import subprocess
|
|
import shutil
|
|
|
|
def getDirectories():
|
|
"""
|
|
Return a list of all directories containing coverage data.
|
|
"""
|
|
sourcedirs = set()
|
|
rootdir = os.getcwd()
|
|
for dirpath, dirnames, filenames in os.walk(rootdir):
|
|
for fname in filenames:
|
|
if fname.endswith('.gcda'):
|
|
dirpath.replace(rootdir, '', 1)
|
|
sourcedirs.add(dirpath)
|
|
|
|
return sourcedirs
|
|
|
|
|
|
def clean():
|
|
"""
|
|
Remove all coverage data.
|
|
"""
|
|
sourcedirs = getDirectories()
|
|
if not sourcedirs:
|
|
return
|
|
|
|
command = ['lcov', '--zerocounters']
|
|
for d in sourcedirs:
|
|
command.append('-d')
|
|
command.append(d)
|
|
subprocess.call(command)
|
|
|
|
|
|
def test():
|
|
"""
|
|
Run the full test suite.
|
|
"""
|
|
subprocess.call(['scons', 'test-reset'])
|
|
subprocess.call(['scons', 'test'])
|
|
|
|
|
|
def collect():
|
|
"""
|
|
Collect the generated coverage data into 'coverage.info'
|
|
"""
|
|
sourcedirs = getDirectories()
|
|
if not sourcedirs:
|
|
print "Warning! Didn't find any coverage data."
|
|
return
|
|
|
|
command = ['lcov', '-c',
|
|
'-b', '.',
|
|
'-o', 'coverage.info']
|
|
for d in sourcedirs:
|
|
command.append('-d')
|
|
command.append(d)
|
|
subprocess.call(command)
|
|
|
|
|
|
def genhtml():
|
|
"""
|
|
Produce an html report from the collected data.
|
|
"""
|
|
if os.path.exists('coverage'):
|
|
shutil.rmtree('coverage')
|
|
|
|
os.mkdir('coverage')
|
|
subprocess.call(['genhtml', 'coverage.info',
|
|
'-o', 'coverage',
|
|
'-p', os.getcwd()])
|
|
|
|
|
|
if __name__ == '__main__':
|
|
clean()
|
|
test()
|
|
collect()
|
|
genhtml()
|