2009-09-08 05:31:18 +00:00
|
|
|
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
|
2009-11-15 01:02:09 +00:00
|
|
|
# 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
|
2009-09-08 05:31:18 +00:00
|
|
|
|
|
|
|
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)
|