109467b48Spatrickimport unittest 209467b48Spatrick 309467b48Spatrickimport lit.discovery 409467b48Spatrickimport lit.LitConfig 509467b48Spatrickimport lit.worker 609467b48Spatrick 709467b48Spatrick""" 809467b48SpatrickTestCase adaptor for providing a Python 'unittest' compatible interface to 'lit' 909467b48Spatricktests. 1009467b48Spatrick""" 1109467b48Spatrick 1209467b48Spatrick 1309467b48Spatrickclass UnresolvedError(RuntimeError): 1409467b48Spatrick pass 1509467b48Spatrick 1609467b48Spatrick 1709467b48Spatrickclass LitTestCase(unittest.TestCase): 1809467b48Spatrick def __init__(self, test, lit_config): 1909467b48Spatrick unittest.TestCase.__init__(self) 2009467b48Spatrick self._test = test 2109467b48Spatrick self._lit_config = lit_config 2209467b48Spatrick 2309467b48Spatrick def id(self): 2409467b48Spatrick return self._test.getFullName() 2509467b48Spatrick 2609467b48Spatrick def shortDescription(self): 2709467b48Spatrick return self._test.getFullName() 2809467b48Spatrick 2909467b48Spatrick def runTest(self): 3009467b48Spatrick # Run the test. 3109467b48Spatrick result = lit.worker._execute(self._test, self._lit_config) 3209467b48Spatrick 3309467b48Spatrick # Adapt the result to unittest. 3409467b48Spatrick if result.code is lit.Test.UNRESOLVED: 3509467b48Spatrick raise UnresolvedError(result.output) 3609467b48Spatrick elif result.code.isFailure: 3709467b48Spatrick self.fail(result.output) 3809467b48Spatrick 3909467b48Spatrick 4009467b48Spatrickdef load_test_suite(inputs): 4109467b48Spatrick import platform 4209467b48Spatrick windows = platform.system() == 'Windows' 4309467b48Spatrick 4409467b48Spatrick # Create the global config object. 4509467b48Spatrick lit_config = lit.LitConfig.LitConfig( 4609467b48Spatrick progname='lit', 4709467b48Spatrick path=[], 4809467b48Spatrick quiet=False, 4909467b48Spatrick useValgrind=False, 5009467b48Spatrick valgrindLeakCheck=False, 5109467b48Spatrick valgrindArgs=[], 5209467b48Spatrick noExecute=False, 5309467b48Spatrick debug=False, 5409467b48Spatrick isWindows=windows, 55*d415bd75Srobert order='smart', 5609467b48Spatrick params={}) 5709467b48Spatrick 5809467b48Spatrick # Perform test discovery. 5973471bf0Spatrick tests = lit.discovery.find_tests_for_inputs(lit_config, inputs, False) 6009467b48Spatrick test_adaptors = [LitTestCase(t, lit_config) for t in tests] 6109467b48Spatrick 6209467b48Spatrick # Return a unittest test suite which just runs the tests in order. 6309467b48Spatrick return unittest.TestSuite(test_adaptors) 64