b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame^] | 1 | """ |
| 2 | # SPDX-License-Identifier: GPL-2.0 |
| 3 | tdc_helper.py - tdc helper functions |
| 4 | |
| 5 | Copyright (C) 2017 Lucas Bates <lucasb@mojatatu.com> |
| 6 | """ |
| 7 | |
| 8 | def 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 | |
| 18 | def get_unique_item(lst): |
| 19 | """ For a list, return a list of the unique items in the list. """ |
| 20 | if len(lst) > 1: |
| 21 | return list(set(lst)) |
| 22 | else: |
| 23 | return lst |
| 24 | |
| 25 | |
| 26 | def get_test_categories(alltests): |
| 27 | """ Discover all unique test categories present in the test case file. """ |
| 28 | ucat = [] |
| 29 | for t in alltests: |
| 30 | ucat.extend(get_unique_item(t['category'])) |
| 31 | ucat = get_unique_item(ucat) |
| 32 | return ucat |
| 33 | |
| 34 | def list_test_cases(testlist): |
| 35 | """ Print IDs and names of all test cases. """ |
| 36 | for curcase in testlist: |
| 37 | print(curcase['id'] + ': (' + ', '.join(curcase['category']) + ") " + curcase['name']) |
| 38 | |
| 39 | |
| 40 | def list_categories(testlist): |
| 41 | """ Show all categories that are present in a test case file. """ |
| 42 | categories = set(map(lambda x: x['category'], testlist)) |
| 43 | print("Available categories:") |
| 44 | print(", ".join(str(s) for s in categories)) |
| 45 | print("") |
| 46 | |
| 47 | |
| 48 | def print_list(cmdlist): |
| 49 | """ Print a list of strings prepended with a tab. """ |
| 50 | for l in cmdlist: |
| 51 | if (type(l) == list): |
| 52 | print("\t" + str(l[0])) |
| 53 | else: |
| 54 | print("\t" + str(l)) |
| 55 | |
| 56 | |
| 57 | def print_sll(items): |
| 58 | print("\n".join(str(s) for s in items)) |
| 59 | |
| 60 | |
| 61 | def print_test_case(tcase): |
| 62 | """ Pretty-printing of a given test case. """ |
| 63 | print('\n==============\nTest {}\t{}\n'.format(tcase['id'], tcase['name'])) |
| 64 | for k in tcase.keys(): |
| 65 | if (isinstance(tcase[k], list)): |
| 66 | print(k + ":") |
| 67 | print_list(tcase[k]) |
| 68 | else: |
| 69 | if not ((k == 'id') or (k == 'name')): |
| 70 | print(k + ": " + str(tcase[k])) |