Merge branch 'bugfix/ci_missing_outputs' into 'master'

Tiny-test-fw: Fix string comparison which cases ignore of test cases

See merge request idf/esp-idf!3458
This commit is contained in:
Ivan Grokhotkov 2018-10-18 22:41:48 +08:00
commit ebe0e2939a

View file

@ -51,15 +51,18 @@ import yaml
import TestCase import TestCase
def _convert_to_lower_case(item): def _convert_to_lower_case_bytes(item):
""" """
bot filter is always lower case string. bot filter is always lower case string.
this function will convert to all string to lower case. this function will convert to all string to lower case.
Note: Unicode strings are converted to bytes.
""" """
if isinstance(item, (tuple, list)): if isinstance(item, (tuple, list)):
output = [_convert_to_lower_case(v) for v in item] output = [_convert_to_lower_case_bytes(v) for v in item]
elif isinstance(item, str): elif type(item) == type(b''):
output = item.lower() output = item.lower()
elif type(item) == type(u''):
output = item.encode().lower()
else: else:
output = item output = item
return output return output
@ -76,8 +79,8 @@ def _filter_one_case(test_method, case_filter):
if key in test_method.case_info: if key in test_method.case_info:
# the filter key is both in case and filter # the filter key is both in case and filter
# we need to check if they match # we need to check if they match
filter_item = _convert_to_lower_case(case_filter[orig_key]) filter_item = _convert_to_lower_case_bytes(case_filter[orig_key])
accepted_item = _convert_to_lower_case(test_method.case_info[key]) accepted_item = _convert_to_lower_case_bytes(test_method.case_info[key])
if isinstance(filter_item, (tuple, list)) \ if isinstance(filter_item, (tuple, list)) \
and isinstance(accepted_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 # 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 filter_result = True if filter_item in accepted_item else False
else: 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 # both string/int, just do string compare
filter_result = (filter_item == accepted_item) filter_result = (filter_item == accepted_item)
else: else: