twister: harness: Check Console harness configuration
If Console Harness 'harness_config' properties have no 'regex' patterns or no correct 'type' set, then ConfigurationError exception is raised, handled, and the test instance error is accounted in the summary results. Signed-off-by: Dmitrii Golovanov <dmitrii.golovanov@intel.com>
This commit is contained in:
parent
8b6f447ef8
commit
00d260af96
2 changed files with 27 additions and 2 deletions
|
@ -13,6 +13,7 @@ import logging
|
|||
import threading
|
||||
import time
|
||||
|
||||
from twisterlib.error import ConfigurationError
|
||||
from twisterlib.environment import ZEPHYR_BASE, PYTEST_PLUGIN_INSTALLED
|
||||
from twisterlib.handlers import Handler, terminate_process, SUPPORTED_SIMS_IN_PYTEST
|
||||
from twisterlib.testinstance import TestInstance
|
||||
|
@ -162,6 +163,14 @@ class Console(Harness):
|
|||
|
||||
def configure(self, instance):
|
||||
super(Console, self).configure(instance)
|
||||
if self.regex is None or len(self.regex) == 0:
|
||||
self.state = "failed"
|
||||
tc = self.instance.set_case_status_by_name(
|
||||
self.id,
|
||||
"failed",
|
||||
f"HARNESS:{self.__class__.__name__}:no regex patterns configured."
|
||||
)
|
||||
raise ConfigurationError(self.instance.name, tc.reason)
|
||||
if self.type == "one_line":
|
||||
self.pattern = re.compile(self.regex[0])
|
||||
self.patterns_expected = 1
|
||||
|
@ -170,6 +179,15 @@ class Console(Harness):
|
|||
for r in self.regex:
|
||||
self.patterns.append(re.compile(r))
|
||||
self.patterns_expected = len(self.patterns)
|
||||
else:
|
||||
self.state = "failed"
|
||||
tc = self.instance.set_case_status_by_name(
|
||||
self.id,
|
||||
"failed",
|
||||
f"HARNESS:{self.__class__.__name__}:incorrect type={self.type}"
|
||||
)
|
||||
raise ConfigurationError(self.instance.name, tc.reason)
|
||||
#
|
||||
|
||||
def handle(self, line):
|
||||
if self.type == "one_line":
|
||||
|
|
|
@ -25,7 +25,7 @@ from colorama import Fore
|
|||
from domains import Domains
|
||||
from twisterlib.cmakecache import CMakeCache
|
||||
from twisterlib.environment import canonical_zephyr_base
|
||||
from twisterlib.error import BuildError
|
||||
from twisterlib.error import BuildError, ConfigurationError
|
||||
|
||||
import elftools
|
||||
from elftools.elf.elffile import ELFFile
|
||||
|
@ -1069,7 +1069,14 @@ class ProjectBuilder(FilterBuilder):
|
|||
instance.handler.extra_test_args = self.options.extra_test_args
|
||||
|
||||
harness = HarnessImporter.get_harness(instance.testsuite.harness.capitalize())
|
||||
harness.configure(instance)
|
||||
try:
|
||||
harness.configure(instance)
|
||||
except ConfigurationError as error:
|
||||
instance.status = "error"
|
||||
instance.reason = str(error)
|
||||
logger.error(instance.reason)
|
||||
return
|
||||
#
|
||||
if isinstance(harness, Pytest):
|
||||
harness.pytest_run(instance.handler.get_test_timeout())
|
||||
else:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue