diff --git a/tools/tiny-test-fw/Utility/CaseConfig.py b/tools/tiny-test-fw/Utility/CaseConfig.py index 3260c9b6e..910131dd9 100644 --- a/tools/tiny-test-fw/Utility/CaseConfig.py +++ b/tools/tiny-test-fw/Utility/CaseConfig.py @@ -51,15 +51,18 @@ import yaml import TestCase -def _convert_to_lower_case(item): +def _convert_to_lower_case_bytes(item): """ bot filter is always lower case string. this function will convert to all string to lower case. + Note: Unicode strings are converted to bytes. """ if isinstance(item, (tuple, list)): - output = [_convert_to_lower_case(v) for v in item] - elif isinstance(item, str): + output = [_convert_to_lower_case_bytes(v) for v in item] + elif type(item) == type(b''): output = item.lower() + elif type(item) == type(u''): + output = item.encode().lower() else: output = item return output @@ -76,8 +79,8 @@ def _filter_one_case(test_method, case_filter): if key in test_method.case_info: # the filter key is both in case and filter # we need to check if they match - filter_item = _convert_to_lower_case(case_filter[orig_key]) - accepted_item = _convert_to_lower_case(test_method.case_info[key]) + filter_item = _convert_to_lower_case_bytes(case_filter[orig_key]) + accepted_item = _convert_to_lower_case_bytes(test_method.case_info[key]) if isinstance(filter_item, (tuple, list)) \ and isinstance(accepted_item, (tuple, list)): @@ -90,6 +93,9 @@ def _filter_one_case(test_method, case_filter): # accepted item list/tuple, check if case filter value is in accept item list/tuple filter_result = True if filter_item in accepted_item else False else: + if type(filter_item) != type(accepted_item): + # This will catch silent ignores of test cases when Unicode and bytes are compared + raise AssertionError(filter_item, '!=', accepted_item) # both string/int, just do string compare filter_result = (filter_item == accepted_item) else: