1#! /usr/bin/env python3 2# SPDX-License-Identifier: BSD-3-Clause 3# Copyright(c) 2023 Intel Corporation 4 5import sys 6import re 7 8input_list = sys.argv[1:] 9test_def_regex = re.compile("REGISTER_([A-Z]+)_TEST\s*\(\s*([a-z0-9_]+)") 10test_suites = {} 11# track tests not in any test suite. 12non_suite_regex = re.compile("REGISTER_TEST_COMMAND\s*\(\s*([a-z0-9_]+)") 13non_suite_tests = [] 14 15def get_fast_test_params(test_name, ln): 16 "Extract the extra fast-test parameters from the line" 17 (_, rest_of_line) = ln.split(test_name, 1) 18 (_, nohuge, asan, _func) = rest_of_line.split(',', 3) 19 return f":{nohuge.strip().lower()}:{asan.strip().lower()}" 20 21for fname in input_list: 22 with open(fname, "r", encoding="utf-8") as f: 23 contents = [ln.strip() for ln in f.readlines()] 24 test_lines = [ln for ln in contents if test_def_regex.match(ln)] 25 non_suite_tests.extend([non_suite_regex.match(ln).group(1) 26 for ln in contents if non_suite_regex.match(ln)]) 27 for ln in test_lines: 28 (test_suite, test_name) = test_def_regex.match(ln).group(1, 2) 29 suite_name = f"{test_suite.lower()}-tests" 30 if suite_name in test_suites: 31 test_suites[suite_name].append(test_name) 32 else: 33 test_suites[suite_name] = [test_name] 34 if suite_name == "fast-tests": 35 test_suites["fast-tests"][-1] += get_fast_test_params(test_name, ln) 36 37for suite in test_suites.keys(): 38 print(f"{suite}={','.join(test_suites[suite])}") 39print(f"non_suite_tests={','.join(non_suite_tests)}") 40