blob: db2e0324651e74bbe6c68bdcc0ed24c04a5845d6 [file] [log] [blame]
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
# The repeat index of this test, or None.
self.index = None
def copyWithIndex(self, index):
import copy
res = copy.copy(self)
res.index = index
return res
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)