Skip to content

Commit

Permalink
scripts: twister: Elevate Status Error
Browse files Browse the repository at this point in the history
Status errors previously logged an error, but didn't fail the running test.
This commit changes that and introduces a new StatusError to use there.
Additionally, one test is modified so it follows proper status form.

Signed-off-by: Lukasz Mrugala <[email protected]>
  • Loading branch information
LukaszMrugala committed Aug 14, 2024
1 parent 858a687 commit 5669380
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 16 deletions.
4 changes: 4 additions & 0 deletions scripts/pylib/twister/twisterlib/error.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,7 @@ class BuildError(TwisterException):

class ExecutionError(TwisterException):
pass


class StatusError(TwisterException):
pass
10 changes: 6 additions & 4 deletions scripts/pylib/twister/twisterlib/harness.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import json

from twisterlib.reports import ReportStatus
from twisterlib.error import ConfigurationError
from twisterlib.error import ConfigurationError, StatusError
from twisterlib.environment import ZEPHYR_BASE, PYTEST_PLUGIN_INSTALLED
from twisterlib.handlers import Handler, terminate_process, SUPPORTED_SIMS_IN_PYTEST
from twisterlib.statuses import TwisterStatus
Expand Down Expand Up @@ -75,9 +75,11 @@ def status(self, value : TwisterStatus) -> None:
key = value.name if isinstance(value, Enum) else value
self._status = TwisterStatus[key]
except KeyError:
logger.error(f'Harness assigned status "{value}"'
f' without an equivalent in TwisterStatus.'
f' Assignment was ignored.')
error_msg = f'Harness assigned status "{value}"' \
f' without an equivalent in TwisterStatus.' \
f' Assignment was ignored.'
logger.error(error_msg)
raise StatusError(error_msg)

def configure(self, instance):
self.instance = instance
Expand Down
10 changes: 6 additions & 4 deletions scripts/pylib/twister/twisterlib/testinstance.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

from twisterlib.testsuite import TestCase, TestSuite
from twisterlib.platform import Platform
from twisterlib.error import BuildError
from twisterlib.error import BuildError, StatusError
from twisterlib.size_calc import SizeCalculator
from twisterlib.statuses import TwisterStatus
from twisterlib.handlers import (
Expand Down Expand Up @@ -105,9 +105,11 @@ def status(self, value : TwisterStatus) -> None:
key = value.name if isinstance(value, Enum) else value
self._status = TwisterStatus[key]
except KeyError:
logger.error(f'TestInstance assigned status "{value}"'
f' without an equivalent in TwisterStatus.'
f' Assignment was ignored.')
error_msg = f'TestInstance assigned status "{value}"' \
f' without an equivalent in TwisterStatus.' \
f' Assignment was ignored.'
logger.error(error_msg)
raise StatusError(error_msg)

def add_filter(self, reason, filter_type):
self.filters.append({'type': filter_type, 'reason': reason })
Expand Down
18 changes: 11 additions & 7 deletions scripts/pylib/twister/twisterlib/testsuite.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

from twisterlib.mixins import DisablePyTestCollectionMixin
from twisterlib.environment import canonical_zephyr_base
from twisterlib.error import TwisterException, TwisterRuntimeError
from twisterlib.error import StatusError, TwisterException, TwisterRuntimeError
from twisterlib.statuses import TwisterStatus

logger = logging.getLogger('twister')
Expand Down Expand Up @@ -377,9 +377,11 @@ def status(self, value : TwisterStatus) -> None:
key = value.name if isinstance(value, Enum) else value
self._status = TwisterStatus[key]
except KeyError:
logger.error(f'TestCase assigned status "{value}"'
f' without an equivalent in TwisterStatus.'
f' Assignment was ignored.')
error_msg = f'TestCase assigned status "{value}"' \
f' without an equivalent in TwisterStatus.' \
f' Assignment was ignored.'
logger.error(error_msg)
raise StatusError(error_msg)

def __lt__(self, other):
return self.name < other.name
Expand Down Expand Up @@ -445,9 +447,11 @@ def status(self, value : TwisterStatus) -> None:
key = value.name if isinstance(value, Enum) else value
self._status = TwisterStatus[key]
except KeyError:
logger.error(f'TestSuite assigned status "{value}"'
f' without an equivalent in TwisterStatus.'
f' Assignment was ignored.')
error_msg = f'TestSuite assigned status "{value}"' \
f' without an equivalent in TwisterStatus.' \
f' Assignment was ignored.'
logger.error(error_msg)
raise StatusError(error_msg)

def load(self, data):
for k, v in data.items():
Expand Down
2 changes: 1 addition & 1 deletion scripts/tests/twister/test_handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ def test_handler_final_handle_actions(mocked_instance):
handler.suite_name_check = True

harness = twisterlib.harness.Test()
harness.status = mock.Mock()
harness.status = 'NONE'
harness.detected_suite_names = mock.Mock()
harness.matched_run_id = False
harness.run_id_exists = True
Expand Down

0 comments on commit 5669380

Please sign in to comment.