| # 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 |
| |
| |
| class TestSignalError(Exception): |
| """Raised when an error occurs inside a test signal.""" |
| |
| |
| 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) |
| |
| |
| class TestError(TestSignal): |
| """Raised when a test has an unexpected error.""" |
| |
| |
| class TestFailure(TestSignal): |
| """Raised when a test has failed.""" |
| |
| |
| class TestPass(TestSignal): |
| """Raised when a test has passed.""" |
| |
| |
| class TestSkip(TestSignal): |
| """Raised when a test has been skipped.""" |
| |
| |
| class TestAbortSignal(TestSignal): |
| """Base class for abort signals. |
| """ |
| |
| |
| class TestAbortClass(TestAbortSignal): |
| """Raised when all subsequent tests within the same test class should |
| be aborted. |
| """ |
| |
| |
| class TestAbortAll(TestAbortSignal): |
| """Raised when all subsequent tests should be aborted.""" |
| |
| |
| class ControllerError(Exception): |
| """Raised when an error occurred in controller classes.""" |