]> git.donarmstrong.com Git - lilypond.git/blob - buildscripts/coverage.py
add coverage.py: check test suite coverage.
[lilypond.git] / buildscripts / coverage.py
1 #!/bin/sh
2 import os
3 import glob
4 import re
5
6 cmds = """
7 ./configure --enable-config=cov --disable-optimising
8 make conf=cov -j2
9 make conf=cov test LILYPOND_JOBS=          
10
11 cd out-cov
12 ln ../lily/* .
13 ln ../lily/out-conv/*cc .
14 mkdir include
15 ln ../lily/include/* include/
16 for a in *[cyl] ; do  gcov -o ../lily/out-cov/  -p $a > $a.gcov-summary ; done 
17 """
18
19 cmds = ''
20
21 for c in cmds.split ('\n'):
22     os.system (c)
23
24 os.chdir ('out-cov')
25
26 #File 'accidental-engraver.cc'
27 #Lines executed:87.70% of 252
28
29 results = []
30 for f in glob.glob ('*.gcov-summary'):
31     str = open (f).read ()
32     m = re.search ("File '([^']+.cc)'\s*Lines executed:([0-9.]+)% of ([0-9]+)", str)
33     if '/usr/lib' in m.group (1):
34         continue
35    
36     if m:
37         tup = (float (m.group (2)), int (m.group (3)), m.group (1))
38         results.append(tup)
39
40 results.sort ()
41 for r in results:
42     print '%5.2f (%6d): %s' % r
43