mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	- Currently just useful for timing, although it could be extended as one (bad) way to deal with flaky tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88827 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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)
 |