1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
#!/usr/bin/env python
import subprocess
def run_tests(cmd):
proc = subprocess.Popen(cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True)
stdout, stderr = proc.communicate()
if proc.returncode:
msg = 'Running cmd: %s\n Error: %s' % (cmd, error)
raise StandardError(msg)
# Nose returns the output in stderr
return stderr
def grab_coverage(output):
"""Grab coverage lines from nose output."""
output = output.split('\n')
covout = []
header = None
tcount = None
for line in output:
if line.startswith('nipype.interfaces.') or \
line.startswith('nipype.pipeline.') or \
line.startswith('nipype.utils.'):
# Remove the Missing lines, too noisy
percent_index = line.find('%')
percent_index += 1
covout.append(line[:percent_index])
if line.startswith('Name '):
header = line
if line.startswith('Ran '):
tcount = line
covout.insert(0, header)
covout.insert(1, '-'*70)
covout.append('-'*70)
covout.append(tcount)
return '\n'.join(covout)
def main():
cmd = 'nosetests --with-coverage --cover-package=nipype'
print 'From current directory, running cmd:'
print cmd, '\n'
output = run_tests(cmd)
report = grab_coverage(output)
print report
main()
|