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