176b903eeSLucas Bates""" 2*b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 376b903eeSLucas Batestdc_helper.py - tdc helper functions 476b903eeSLucas Bates 576b903eeSLucas BatesCopyright (C) 2017 Lucas Bates <lucasb@mojatatu.com> 676b903eeSLucas Bates""" 776b903eeSLucas Bates 876b903eeSLucas Batesdef get_categorized_testlist(alltests, ucat): 976b903eeSLucas Bates """ Sort the master test list into categories. """ 1076b903eeSLucas Bates testcases = dict() 1176b903eeSLucas Bates 1276b903eeSLucas Bates for category in ucat: 1376b903eeSLucas Bates testcases[category] = list(filter(lambda x: category in x['category'], alltests)) 1476b903eeSLucas Bates 1576b903eeSLucas Bates return(testcases) 1676b903eeSLucas Bates 1776b903eeSLucas Bates 1876b903eeSLucas Batesdef get_unique_item(lst): 1976b903eeSLucas Bates """ For a list, return a set of the unique items in the list. """ 2076b903eeSLucas Bates return list(set(lst)) 2176b903eeSLucas Bates 2276b903eeSLucas Bates 2376b903eeSLucas Batesdef get_test_categories(alltests): 2476b903eeSLucas Bates """ Discover all unique test categories present in the test case file. """ 2576b903eeSLucas Bates ucat = [] 2676b903eeSLucas Bates for t in alltests: 2776b903eeSLucas Bates ucat.extend(get_unique_item(t['category'])) 2876b903eeSLucas Bates ucat = get_unique_item(ucat) 2976b903eeSLucas Bates return ucat 3076b903eeSLucas Bates 3176b903eeSLucas Batesdef list_test_cases(testlist): 3276b903eeSLucas Bates """ Print IDs and names of all test cases. """ 3376b903eeSLucas Bates for curcase in testlist: 3476b903eeSLucas Bates print(curcase['id'] + ': (' + ', '.join(curcase['category']) + ") " + curcase['name']) 3576b903eeSLucas Bates 3676b903eeSLucas Bates 3776b903eeSLucas Batesdef list_categories(testlist): 3876b903eeSLucas Bates """ Show all categories that are present in a test case file. """ 3976b903eeSLucas Bates categories = set(map(lambda x: x['category'], testlist)) 4076b903eeSLucas Bates print("Available categories:") 4176b903eeSLucas Bates print(", ".join(str(s) for s in categories)) 4276b903eeSLucas Bates print("") 4376b903eeSLucas Bates 4476b903eeSLucas Bates 4576b903eeSLucas Batesdef print_list(cmdlist): 4676b903eeSLucas Bates """ Print a list of strings prepended with a tab. """ 4776b903eeSLucas Bates for l in cmdlist: 4876b903eeSLucas Bates if (type(l) == list): 4976b903eeSLucas Bates print("\t" + str(l[0])) 5076b903eeSLucas Bates else: 5176b903eeSLucas Bates print("\t" + str(l)) 5276b903eeSLucas Bates 5376b903eeSLucas Bates 5476b903eeSLucas Batesdef print_sll(items): 5576b903eeSLucas Bates print("\n".join(str(s) for s in items)) 5676b903eeSLucas Bates 5776b903eeSLucas Bates 5876b903eeSLucas Batesdef print_test_case(tcase): 5976b903eeSLucas Bates """ Pretty-printing of a given test case. """ 6076b903eeSLucas Bates for k in tcase.keys(): 6176b903eeSLucas Bates if (type(tcase[k]) == list): 6276b903eeSLucas Bates print(k + ":") 6376b903eeSLucas Bates print_list(tcase[k]) 6476b903eeSLucas Bates else: 6576b903eeSLucas Bates print(k + ": " + tcase[k]) 6676b903eeSLucas Bates 6776b903eeSLucas Bates 6876b903eeSLucas Batesdef show_test_case_by_id(testlist, caseID): 6976b903eeSLucas Bates """ Find the specified test case to pretty-print. """ 7076b903eeSLucas Bates if not any(d.get('id', None) == caseID for d in testlist): 7176b903eeSLucas Bates print("That ID does not exist.") 7276b903eeSLucas Bates exit(1) 7376b903eeSLucas Bates else: 7476b903eeSLucas Bates print_test_case(next((d for d in testlist if d['id'] == caseID))) 7576b903eeSLucas Bates 7676b903eeSLucas Bates 77