1#!/usr/bin/env python3
2#
3# Arm SCP/MCP Software
4# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
5#
6# SPDX-License-Identifier: BSD-3-Clause
7#
8import os
9import zipfile
10
11import re
12
13"""
14Filters out test and mock code from coverage report so that
15only actual SCP code is evaluated
16"""
17
18Filename = "scp_v2_unit_test_coverage.info"
19OutFileName = "scp_v2_unit_test_coverage_filtered.info"
20
21STARTER = "SF:"
22regexes = [re.compile(r"unit_test/"), re.compile(r"module/.{1,50}/test"),
23           re.compile(r"contrib/cmock/")]
24
25ENDED = "end_of_record"
26
27
28def get_filtered_info():
29    within = False
30    filter = False
31    dump_lines = []
32
33    with open(OutFileName, "w") as fd:
34        with open(Filename, "r") as fd_in:
35            for line in fd_in.readlines():
36
37                if STARTER in line:
38                    within = True
39
40                    if any(regex.search(line) for regex in regexes):
41                        filter = True
42
43                if within or "TN:" in line:
44                    dump_lines.append(line)
45
46                if ENDED in line:
47                    if not filter:
48                        fd.writelines(dump_lines)
49
50                    dump_lines = []
51                    within = False
52                    filter = False
53
54
55if __name__ == "__main__":
56    get_filtered_info()
57