1""" 2# SPDX-License-Identifier: GPL-2.0 3tdc_helper.py - tdc helper functions 4 5Copyright (C) 2017 Lucas Bates <lucasb@mojatatu.com> 6""" 7 8def get_categorized_testlist(alltests, ucat): 9 """ Sort the master test list into categories. """ 10 testcases = dict() 11 12 for category in ucat: 13 testcases[category] = list(filter(lambda x: category in x['category'], alltests)) 14 15 return(testcases) 16 17 18def get_unique_item(lst): 19 """ For a list, return a list of the unique items in the list. """ 20 return list(set(lst)) 21 22 23def get_test_categories(alltests): 24 """ Discover all unique test categories present in the test case file. """ 25 ucat = [] 26 for t in alltests: 27 ucat.extend(get_unique_item(t['category'])) 28 ucat = get_unique_item(ucat) 29 return ucat 30 31def list_test_cases(testlist): 32 """ Print IDs and names of all test cases. """ 33 for curcase in testlist: 34 print(curcase['id'] + ': (' + ', '.join(curcase['category']) + ") " + curcase['name']) 35 36 37def list_categories(testlist): 38 """ Show all categories that are present in a test case file. """ 39 categories = set(map(lambda x: x['category'], testlist)) 40 print("Available categories:") 41 print(", ".join(str(s) for s in categories)) 42 print("") 43 44 45def print_list(cmdlist): 46 """ Print a list of strings prepended with a tab. """ 47 for l in cmdlist: 48 if (type(l) == list): 49 print("\t" + str(l[0])) 50 else: 51 print("\t" + str(l)) 52 53 54def print_sll(items): 55 print("\n".join(str(s) for s in items)) 56 57 58def print_test_case(tcase): 59 """ Pretty-printing of a given test case. """ 60 for k in tcase.keys(): 61 if (isinstance(tcase[k], list)): 62 print(k + ":") 63 print_list(tcase[k]) 64 else: 65 print(k + ": " + tcase[k]) 66 67 68def show_test_case_by_id(testlist, caseID): 69 """ Find the specified test case to pretty-print. """ 70 if not any(d.get('id', None) == caseID for d in testlist): 71 print("That ID does not exist.") 72 exit(1) 73 else: 74 print_test_case(next((d for d in testlist if d['id'] == caseID))) 75 76 77