twister: log error for non-existing platform call
Changes will log error message in following three situations: 1. Platform name pass in --platform option does not exist. 2. During using --all option, platform from platform_allow list does not exist. 3. During using --integration option, platform from integration_platforms list does not exist. Fixes #31868 Signed-off-by: Piotr Golyzniak <piotr.golyzniak@nordicsemi.no>
This commit is contained in:
parent
ecff02891d
commit
3194f75098
1 changed files with 22 additions and 1 deletions
|
@ -2770,6 +2770,7 @@ class TestSuite(DisablePyTestCollectionMixin):
|
|||
self.testcases = {}
|
||||
self.quarantine = {}
|
||||
self.platforms = []
|
||||
self.platform_names = []
|
||||
self.selected_platforms = []
|
||||
self.filtered_platforms = []
|
||||
self.default_platforms = []
|
||||
|
@ -3012,6 +3013,8 @@ class TestSuite(DisablePyTestCollectionMixin):
|
|||
logger.error("E: %s: can't load: %s" % (file, e))
|
||||
self.load_errors += 1
|
||||
|
||||
self.platform_names = [p.name for p in self.platforms]
|
||||
|
||||
def get_all_tests(self):
|
||||
tests = []
|
||||
for _, tc in self.testcases.items():
|
||||
|
@ -3131,7 +3134,7 @@ class TestSuite(DisablePyTestCollectionMixin):
|
|||
quarantine_list = []
|
||||
for quar_dict in quarantine_yaml:
|
||||
if quar_dict['platforms'][0] == "all":
|
||||
plat = [p.name for p in self.platforms]
|
||||
plat = self.platform_names
|
||||
else:
|
||||
plat = quar_dict['platforms']
|
||||
comment = quar_dict.get('comment', "NA")
|
||||
|
@ -3217,6 +3220,7 @@ class TestSuite(DisablePyTestCollectionMixin):
|
|||
emulation_platforms = True
|
||||
|
||||
if platform_filter:
|
||||
self.verify_platforms_existence(platform_filter, f"platform_filter")
|
||||
platforms = list(filter(lambda p: p.name in platform_filter, self.platforms))
|
||||
elif emu_filter:
|
||||
platforms = list(filter(lambda p: p.simulation != 'na', self.platforms))
|
||||
|
@ -3234,6 +3238,8 @@ class TestSuite(DisablePyTestCollectionMixin):
|
|||
if tc.build_on_all and not platform_filter:
|
||||
platform_scope = self.platforms
|
||||
elif tc.integration_platforms and self.integration:
|
||||
self.verify_platforms_existence(
|
||||
tc.integration_platforms, f"{tc_name} - integration_platforms")
|
||||
platform_scope = list(filter(lambda item: item.name in tc.integration_platforms, \
|
||||
self.platforms))
|
||||
else:
|
||||
|
@ -3244,6 +3250,8 @@ class TestSuite(DisablePyTestCollectionMixin):
|
|||
# If there isn't any overlap between the platform_allow list and the platform_scope
|
||||
# we set the scope to the platform_allow list
|
||||
if tc.platform_allow and not platform_filter and not integration:
|
||||
self.verify_platforms_existence(
|
||||
tc.platform_allow, f"{tc_name} - platform_allow")
|
||||
a = set(platform_scope)
|
||||
b = set(filter(lambda item: item.name in tc.platform_allow, self.platforms))
|
||||
c = a.intersection(b)
|
||||
|
@ -3856,6 +3864,19 @@ class TestSuite(DisablePyTestCollectionMixin):
|
|||
results.append(tc)
|
||||
return results
|
||||
|
||||
def verify_platforms_existence(self, platform_names_to_verify, log_info=""):
|
||||
"""
|
||||
Verify if platform name (passed by --platform option, or in yaml file
|
||||
as platform_allow or integration_platforms options) is correct. If not -
|
||||
log error.
|
||||
"""
|
||||
for platform in platform_names_to_verify:
|
||||
if platform in self.platform_names:
|
||||
break
|
||||
else:
|
||||
logger.error(f"{log_info} - unrecognized platform - {platform}")
|
||||
|
||||
|
||||
class CoverageTool:
|
||||
""" Base class for every supported coverage tool
|
||||
"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue