xref: /openbsd/gnu/llvm/llvm/utils/lit/lit/LitTestCase.py (revision d415bd75)
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