##// END OF EJS Templates
Added ability to relocate gcda and gcno files and added gcovr wrapper...
Added ability to relocate gcda and gcno files and added gcovr wrapper This allows to run tests separatly and merge coverage at the end.

File last commit:

r398:57611985e772 R3++
r398:57611985e772 R3++
Show More
build_gcov_files.py
49 lines | 1.7 KiB | text/x-python | PythonLexer
#!/usr/bin/env python3
__author__ = "Alexis Jeandet"
__copyright__ = "Copyright 2018, Laboratory of Plasma Physics"
__credits__ = []
__license__ = "GPLv2"
__version__ = "1.0.0"
__maintainer__ = "Alexis Jeandet"
__email__ = "alexis.jeandet@member.fsf.org"
__status__ = "Development"
import time
import sys
import os
import serial
import argparse
from datetime import datetime
import pathlib
from shutil import copyfile
parser = argparse.ArgumentParser()
parser.add_argument("-r", "--remove-prefix", help="Will remove given prefix path", default="")
parser.add_argument("-o", "--output-folder", help="Will prepend given path to gcda files", default="")
parser.add_argument("file", help="Gcov output file generated by record_lfr_console.py")
args = parser.parse_args()
def main():
with open(args.file, 'r') as gcov:
files = []
for line in gcov.readlines():
head, dest_file,data = line.split(',')
if dest_file not in files:
files.append(dest_file)
if head == '_GCOV_':
gcno_file = dest_file.replace(".gcda",".gcno")
dest_file = dest_file.replace(args.remove_prefix, args.output_folder)
pathlib.Path(os.path.dirname(dest_file)).mkdir(parents=True, exist_ok=True)
copyfile(gcno_file, gcno_file.replace(args.remove_prefix, args.output_folder))
print(f"Writing {dest_file}\n")
with open(dest_file,'wb') as gcda_file:
gcda_file.write(bytes([int(''.join(value),16) for value in zip(data[::2],data[1::2]) ]))
else:
raise
if __name__ == "__main__":
main()