|  | # -*- Python -*- | 
|  |  | 
|  | import os | 
|  | import sys | 
|  |  | 
|  | import lit.formats | 
|  | from lit.llvm import llvm_config | 
|  |  | 
|  | # Configuration file for the 'lit' test runner. | 
|  |  | 
|  | # name: The name of this test suite. | 
|  | config.name = 'lit' | 
|  |  | 
|  | # testFormat: The test format to use to interpret tests. | 
|  | config.test_format = lit.formats.ShTest(execute_external=False) | 
|  |  | 
|  | # suffixes: A list of file extensions to treat as test files. | 
|  | config.suffixes = ['.py'] | 
|  |  | 
|  | # excludes: A list of individual files to exclude. | 
|  | config.excludes = ['Inputs'] | 
|  |  | 
|  | # test_source_root: The root path where tests are located. | 
|  | config.test_source_root = os.path.dirname(__file__) | 
|  | config.test_exec_root = config.test_source_root | 
|  |  | 
|  | config.target_triple = '(unused)' | 
|  |  | 
|  | llvm_src_root = getattr(config, 'llvm_src_root', None) | 
|  | if llvm_src_root: | 
|  | # ``test_source_root`` may be in LLVM's binary build directory which does not contain | 
|  | # ``lit.py``, so use `llvm_src_root` instead. | 
|  | lit_path = os.path.join(llvm_src_root, 'utils', 'lit') | 
|  | else: | 
|  | lit_path = os.path.join(config.test_source_root, '..') | 
|  |  | 
|  | # Required because some tests import the lit module | 
|  | if llvm_config: | 
|  | llvm_config.with_environment('PYTHONPATH', lit_path, append_path=True) | 
|  | else: | 
|  | config.environment['PYTHONPATH'] = os.pathsep.join([lit_path]) | 
|  |  | 
|  | # Add llvm and lit tools directories if this config is being loaded indirectly. | 
|  | # In this case, we can also expect llvm_config to have been imported correctly. | 
|  | for attribute in ('llvm_tools_dir', 'lit_tools_dir'): | 
|  | directory = getattr(config, attribute, None) | 
|  | if directory: | 
|  | llvm_config.with_environment('PATH', directory, append_path=True) | 
|  |  | 
|  | config.substitutions.append(('%{inputs}', os.path.join( | 
|  | config.test_source_root, 'Inputs'))) | 
|  | config.substitutions.append(('%{lit}', "%%{python} %s" % ( | 
|  | os.path.join(lit_path, 'lit.py'),))) | 
|  | config.substitutions.append(('%{python}', '"%s"' % (sys.executable))) | 
|  |  | 
|  | # Enable coverage.py reporting, assuming the coverage module has been installed | 
|  | # and sitecustomize.py in the virtualenv has been modified appropriately. | 
|  | if lit_config.params.get('check-coverage', None): | 
|  | config.environment['COVERAGE_PROCESS_START'] = os.path.join( | 
|  | os.path.dirname(__file__), ".coveragerc") | 
|  |  | 
|  | # Add a feature to detect if psutil is available | 
|  | try: | 
|  | import psutil | 
|  | lit_config.note('Found python psutil module') | 
|  | config.available_features.add("python-psutil") | 
|  | except ImportError: | 
|  | lit_config.warning('Could not import psutil. Some tests will be skipped and' | 
|  | ' the --timeout command line argument will not work.') | 
|  |  | 
|  | # When running the lit tests standalone, we want to define the same features | 
|  | # that the llvm_config defines. This means that the 'system-windows' feature | 
|  | # (and any others) need to match the names in llvm_config for consistency | 
|  | if not llvm_config: | 
|  | if sys.platform.startswith('win') or sys.platform.startswith('cygwin'): | 
|  | config.available_features.add('system-windows') |