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
|
"""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"""
from __future__ import print_function
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:
raise NotImplementedError('asdf')
newlines.append(line)
open(info_file, 'w').write("\n".join(newlines))
|