| import os |
| |
| # Test results. |
| |
| class TestResult: |
| def __init__(self, name, isFailure): |
| self.name = name |
| self.isFailure = isFailure |
| |
| PASS = TestResult('PASS', False) |
| XFAIL = TestResult('XFAIL', False) |
| FAIL = TestResult('FAIL', True) |
| XPASS = TestResult('XPASS', True) |
| UNRESOLVED = TestResult('UNRESOLVED', True) |
| UNSUPPORTED = TestResult('UNSUPPORTED', False) |
| |
| # Test classes. |
| |
| class TestFormat: |
| """TestFormat - Test information provider.""" |
| |
| def __init__(self, name): |
| self.name = name |
| |
| class TestSuite: |
| """TestSuite - Information on a group of tests. |
| |
| A test suite groups together a set of logically related tests. |
| """ |
| |
| def __init__(self, name, source_root, exec_root, config): |
| self.name = name |
| self.source_root = source_root |
| self.exec_root = exec_root |
| # The test suite configuration. |
| self.config = config |
| |
| def getSourcePath(self, components): |
| return os.path.join(self.source_root, *components) |
| |
| def getExecPath(self, components): |
| return os.path.join(self.exec_root, *components) |
| |
| class Test: |
| """Test - Information on a single test instance.""" |
| |
| def __init__(self, suite, path_in_suite, config): |
| self.suite = suite |
| self.path_in_suite = path_in_suite |
| self.config = config |
| # The test result code, once complete. |
| self.result = None |
| # Any additional output from the test, once complete. |
| self.output = None |
| # The wall time to execute this test, if timing and once complete. |
| self.elapsed = None |
| |
| def setResult(self, result, output, elapsed): |
| assert self.result is None, "Test result already set!" |
| self.result = result |
| self.output = output |
| self.elapsed = elapsed |
| |
| def getFullName(self): |
| return self.suite.config.name + '::' + '/'.join(self.path_in_suite) |
| |
| def getSourcePath(self): |
| return self.suite.getSourcePath(self.path_in_suite) |
| |
| def getExecPath(self): |
| return self.suite.getExecPath(self.path_in_suite) |