1e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaoimport os 2e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 3e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao# Test results. 4e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 5e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaoclass TestResult: 6e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao def __init__(self, name, isFailure): 7e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.name = name 8e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.isFailure = isFailure 9e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 10e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei LiaoPASS = TestResult('PASS', False) 11e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei LiaoXFAIL = TestResult('XFAIL', False) 12e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei LiaoFAIL = TestResult('FAIL', True) 13e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei LiaoXPASS = TestResult('XPASS', True) 14e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei LiaoUNRESOLVED = TestResult('UNRESOLVED', True) 15e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei LiaoUNSUPPORTED = TestResult('UNSUPPORTED', False) 16e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 17e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao# Test classes. 18e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 19e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaoclass TestFormat: 20e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao """TestFormat - Test information provider.""" 21e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 22e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao def __init__(self, name): 23e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.name = name 24e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 25e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaoclass TestSuite: 26e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao """TestSuite - Information on a group of tests. 27e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 28e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao A test suite groups together a set of logically related tests. 29e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao """ 30e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 31e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao def __init__(self, name, source_root, exec_root, config): 32e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.name = name 33e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.source_root = source_root 34e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.exec_root = exec_root 35e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao # The test suite configuration. 36e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.config = config 37e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 38e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao def getSourcePath(self, components): 39e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao return os.path.join(self.source_root, *components) 40e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 41e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao def getExecPath(self, components): 42e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao return os.path.join(self.exec_root, *components) 43e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 44e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaoclass Test: 45e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao """Test - Information on a single test instance.""" 46e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 47e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao def __init__(self, suite, path_in_suite, config): 48e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.suite = suite 49e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.path_in_suite = path_in_suite 50e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.config = config 51e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao # The test result code, once complete. 52e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.result = None 53e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao # Any additional output from the test, once complete. 54e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.output = None 55e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao # The wall time to execute this test, if timing and once complete. 56e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.elapsed = None 57e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao # The repeat index of this test, or None. 58e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.index = None 59e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 60e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao def copyWithIndex(self, index): 61e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao import copy 62e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao res = copy.copy(self) 63e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao res.index = index 64e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao return res 65e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 66e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao def setResult(self, result, output, elapsed): 67e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao assert self.result is None, "Test result already set!" 68e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.result = result 69e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.output = output 70e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao self.elapsed = elapsed 71e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 72e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao def getFullName(self): 73e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao return self.suite.config.name + ' :: ' + '/'.join(self.path_in_suite) 74e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 75e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao def getSourcePath(self): 76e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao return self.suite.getSourcePath(self.path_in_suite) 77e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 78e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao def getExecPath(self): 79e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao return self.suite.getExecPath(self.path_in_suite) 80