mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 15:43:32 +01:00
49 lines
1.1 KiB
Plaintext
49 lines
1.1 KiB
Plaintext
|
#!/usr/bin/python
|
||
|
|
||
|
import os
|
||
|
import re
|
||
|
import subprocess
|
||
|
import sys
|
||
|
|
||
|
def handle_file(source_fname, cov_fname):
|
||
|
|
||
|
lines_blm = subprocess.Popen(["git", "blame", source_fname], stdout=subprocess.PIPE).stdout.readlines()
|
||
|
lines_cov = open(cov_fname).readlines()
|
||
|
|
||
|
# XXXX expensive!
|
||
|
while re.match(r'\s*-:\s*0:', lines_cov[0]):
|
||
|
del lines_cov[0]
|
||
|
|
||
|
if len(lines_blm) != len(lines_cov):
|
||
|
print >>sys.stderr, "MISMATCH IN NUMBER OF LINES in",source_fname
|
||
|
|
||
|
for b,c in zip(lines_blm, lines_cov):
|
||
|
m = re.match(r'\s*([^\s:]+):', c)
|
||
|
if not m:
|
||
|
print >>sys.stderr, "CONFUSING LINE %r"% c
|
||
|
cov = 'X'
|
||
|
elif m.group(1) == '-':
|
||
|
cov = '-'
|
||
|
elif m.group(1)[0] == '#':
|
||
|
cov = '#'
|
||
|
elif m.group(1)[0].isdigit():
|
||
|
cov = '1'
|
||
|
else:
|
||
|
print >>sys.stderr, "CONFUSING LINE %r"% c
|
||
|
cov = 'X'
|
||
|
|
||
|
print cov, b,
|
||
|
|
||
|
COV_DIR = sys.argv[1]
|
||
|
SOURCES = sys.argv[2:]
|
||
|
|
||
|
for fn in SOURCES:
|
||
|
_, base = os.path.split(fn)
|
||
|
cfn = os.path.join(COV_DIR, base)
|
||
|
cfn += ".gcov"
|
||
|
if os.path.exists(cfn):
|
||
|
handle_file(fn, cfn)
|
||
|
else:
|
||
|
print >>sys.stderr, "NO FILE EXISTS CALLED ",cfn
|
||
|
|