diff --git a/scripts/pylib/twister/twisterlib/error.py b/scripts/pylib/twister/twisterlib/error.py index d9a5f25a7271b0..26180653a95143 100644 --- a/scripts/pylib/twister/twisterlib/error.py +++ b/scripts/pylib/twister/twisterlib/error.py @@ -2,28 +2,30 @@ # # Copyright (c) 2018-2022 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +import logging +import traceback -class TwisterException(Exception): - pass +logger = logging.getLogger('twister') +logger.setLevel(logging.DEBUG) +class TwisterException(Exception): + def __init__(self, message="TwisterException"): + super().__init__(message) + logger.error(''.join(["Twister call stack dump:\n"] + traceback.format_stack()[:-1])) class TwisterRuntimeError(TwisterException): pass - class ConfigurationError(TwisterException): def __init__(self, cfile, message): TwisterException.__init__(self, str(cfile) + ": " + message) - class BuildError(TwisterException): pass - class ExecutionError(TwisterException): pass - class StatusAttributeError(TwisterException): def __init__(self, cls : type, value): msg = f'{cls.__name__} assigned status {value}, which could not be cast to a TwisterStatus.' diff --git a/scripts/tests/twister/test_errors.py b/scripts/tests/twister/test_errors.py index 8968b6a1fa1e40..0396ee109f8f43 100644 --- a/scripts/tests/twister/test_errors.py +++ b/scripts/tests/twister/test_errors.py @@ -28,8 +28,8 @@ def test_configurationerror(): def test_status_value_error(): harness = Test() - expected_err = 'Test assigned status None,' \ + expected_err = 'Test assigned status OK,' \ ' which could not be cast to a TwisterStatus.' with pytest.raises(StatusAttributeError, match=expected_err): - harness.status = None + harness.status = "OK" diff --git a/scripts/tests/twister/test_handlers.py b/scripts/tests/twister/test_handlers.py index 4e83d67fa8b7ce..79a1465d12847e 100644 --- a/scripts/tests/twister/test_handlers.py +++ b/scripts/tests/twister/test_handlers.py @@ -131,7 +131,7 @@ def test_handler_final_handle_actions(mocked_instance): handler.suite_name_check = True harness = twisterlib.harness.Test() - harness.status = 'NONE' + harness.status = TwisterStatus.NONE harness.detected_suite_names = mock.Mock() harness.matched_run_id = False harness.run_id_exists = True diff --git a/scripts/tests/twister/test_testsuite.py b/scripts/tests/twister/test_testsuite.py index 8d20902a5ebaf1..83231c0f48adab 100644 --- a/scripts/tests/twister/test_testsuite.py +++ b/scripts/tests/twister/test_testsuite.py @@ -648,7 +648,10 @@ def mock_sf(filename, *args, **kwargs): def mock_stat(filename, *args, **kwargs): result = mock.Mock() - type(result).st_size = sizes[filename] + # as we may call os.stat in code + # some protection need add here + if filename in sizes: + type(result).st_size = sizes[filename] return result