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