Source code for mobly.signals

# Copyright 2016 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""This module is where all the test signal classes and related utilities live.
"""

import json


[docs]class TestSignalError(Exception): """Raised when an error occurs inside a test signal."""
[docs]class TestSignal(Exception): """Base class for all test result control signals. This is used to signal the result of a test. Attributes: details: A string that describes the reason for raising this signal. extras: A json-serializable data type to convey extra information about a test result. """ def __init__(self, details, extras=None): super().__init__(details) self.details = details try: json.dumps(extras) self.extras = extras except TypeError: raise TestSignalError('Extras must be json serializable. %s ' 'is not.' % extras) def __str__(self): return 'Details=%s, Extras=%s' % (self.details, self.extras)
[docs]class TestError(TestSignal): """Raised when a test has an unexpected error."""
[docs]class TestFailure(TestSignal): """Raised when a test has failed."""
[docs]class TestPass(TestSignal): """Raised when a test has passed."""
[docs]class TestSkip(TestSignal): """Raised when a test has been skipped."""
[docs]class TestAbortSignal(TestSignal): """Base class for abort signals. """
[docs]class TestAbortClass(TestAbortSignal): """Raised when all subsequent tests within the same test class should be aborted. """
[docs]class TestAbortAll(TestAbortSignal): """Raised when all subsequent tests should be aborted."""
[docs]class ControllerError(Exception): """Raised when an error occurred in controller classes."""