annotate lldb/test/API/lit.cfg.py @ 150:1d019706d866

LLVM10
author anatofuz
date Thu, 13 Feb 2020 15:10:13 +0900
parents
children 0572611fdcc8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 # -*- Python -*-
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 # Configuration file for the 'lit' test runner.
anatofuz
parents:
diff changeset
4
anatofuz
parents:
diff changeset
5 import os
anatofuz
parents:
diff changeset
6 import platform
anatofuz
parents:
diff changeset
7 import shlex
anatofuz
parents:
diff changeset
8 import shutil
anatofuz
parents:
diff changeset
9
anatofuz
parents:
diff changeset
10 import lit.formats
anatofuz
parents:
diff changeset
11
anatofuz
parents:
diff changeset
12 # name: The name of this test suite.
anatofuz
parents:
diff changeset
13 config.name = 'lldb-api'
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 # suffixes: A list of file extensions to treat as test files.
anatofuz
parents:
diff changeset
16 config.suffixes = ['.py']
anatofuz
parents:
diff changeset
17
anatofuz
parents:
diff changeset
18 # test_source_root: The root path where tests are located.
anatofuz
parents:
diff changeset
19 # test_exec_root: The root path where tests should be run.
anatofuz
parents:
diff changeset
20 config.test_source_root = os.path.dirname(__file__)
anatofuz
parents:
diff changeset
21 config.test_exec_root = config.test_source_root
anatofuz
parents:
diff changeset
22
anatofuz
parents:
diff changeset
23 if 'Address' in config.llvm_use_sanitizer:
anatofuz
parents:
diff changeset
24 config.environment['ASAN_OPTIONS'] = 'detect_stack_use_after_return=1'
anatofuz
parents:
diff changeset
25 # macOS flags needed for LLDB built with address sanitizer.
anatofuz
parents:
diff changeset
26 if 'Darwin' in config.host_os and 'x86' in config.host_triple:
anatofuz
parents:
diff changeset
27 import subprocess
anatofuz
parents:
diff changeset
28 resource_dir = subprocess.check_output(
anatofuz
parents:
diff changeset
29 [config.cmake_cxx_compiler,
anatofuz
parents:
diff changeset
30 '-print-resource-dir']).decode('utf-8').strip()
anatofuz
parents:
diff changeset
31 runtime = os.path.join(resource_dir, 'lib', 'darwin',
anatofuz
parents:
diff changeset
32 'libclang_rt.asan_osx_dynamic.dylib')
anatofuz
parents:
diff changeset
33 config.environment['DYLD_INSERT_LIBRARIES'] = runtime
anatofuz
parents:
diff changeset
34
anatofuz
parents:
diff changeset
35
anatofuz
parents:
diff changeset
36 def find_shlibpath_var():
anatofuz
parents:
diff changeset
37 if platform.system() in ['Linux', 'FreeBSD', 'NetBSD', 'SunOS']:
anatofuz
parents:
diff changeset
38 yield 'LD_LIBRARY_PATH'
anatofuz
parents:
diff changeset
39 elif platform.system() == 'Darwin':
anatofuz
parents:
diff changeset
40 yield 'DYLD_LIBRARY_PATH'
anatofuz
parents:
diff changeset
41 elif platform.system() == 'Windows':
anatofuz
parents:
diff changeset
42 yield 'PATH'
anatofuz
parents:
diff changeset
43
anatofuz
parents:
diff changeset
44
anatofuz
parents:
diff changeset
45 # Shared library build of LLVM may require LD_LIBRARY_PATH or equivalent.
anatofuz
parents:
diff changeset
46 if config.shared_libs:
anatofuz
parents:
diff changeset
47 for shlibpath_var in find_shlibpath_var():
anatofuz
parents:
diff changeset
48 # In stand-alone build llvm_shlib_dir specifies LLDB's lib directory while
anatofuz
parents:
diff changeset
49 # llvm_libs_dir specifies LLVM's lib directory.
anatofuz
parents:
diff changeset
50 shlibpath = os.path.pathsep.join(
anatofuz
parents:
diff changeset
51 (config.llvm_shlib_dir, config.llvm_libs_dir,
anatofuz
parents:
diff changeset
52 config.environment.get(shlibpath_var, '')))
anatofuz
parents:
diff changeset
53 config.environment[shlibpath_var] = shlibpath
anatofuz
parents:
diff changeset
54 else:
anatofuz
parents:
diff changeset
55 lit_config.warning("unable to inject shared library path on '{}'".format(
anatofuz
parents:
diff changeset
56 platform.system()))
anatofuz
parents:
diff changeset
57
anatofuz
parents:
diff changeset
58 # Propagate LLDB_CAPTURE_REPRODUCER
anatofuz
parents:
diff changeset
59 if 'LLDB_CAPTURE_REPRODUCER' in os.environ:
anatofuz
parents:
diff changeset
60 config.environment['LLDB_CAPTURE_REPRODUCER'] = os.environ[
anatofuz
parents:
diff changeset
61 'LLDB_CAPTURE_REPRODUCER']
anatofuz
parents:
diff changeset
62
anatofuz
parents:
diff changeset
63 # Clean the module caches in the test build directory. This is necessary in an
anatofuz
parents:
diff changeset
64 # incremental build whenever clang changes underneath, so doing it once per
anatofuz
parents:
diff changeset
65 # lit.py invocation is close enough.
anatofuz
parents:
diff changeset
66 for cachedir in [config.clang_module_cache, config.lldb_module_cache]:
anatofuz
parents:
diff changeset
67 if os.path.isdir(cachedir):
anatofuz
parents:
diff changeset
68 print("Deleting module cache at %s." % cachedir)
anatofuz
parents:
diff changeset
69 shutil.rmtree(cachedir)
anatofuz
parents:
diff changeset
70
anatofuz
parents:
diff changeset
71 # Set a default per-test timeout of 10 minutes. Setting a timeout per test
anatofuz
parents:
diff changeset
72 # requires that killProcessAndChildren() is supported on the platform and
anatofuz
parents:
diff changeset
73 # lit complains if the value is set but it is not supported.
anatofuz
parents:
diff changeset
74 supported, errormsg = lit_config.maxIndividualTestTimeIsSupported
anatofuz
parents:
diff changeset
75 if supported:
anatofuz
parents:
diff changeset
76 lit_config.maxIndividualTestTime = 600
anatofuz
parents:
diff changeset
77 else:
anatofuz
parents:
diff changeset
78 lit_config.warning("Could not set a default per-test timeout. " + errormsg)
anatofuz
parents:
diff changeset
79
anatofuz
parents:
diff changeset
80 # Build dotest command.
anatofuz
parents:
diff changeset
81 dotest_cmd = [config.dotest_path]
anatofuz
parents:
diff changeset
82 dotest_cmd += ['--arch', config.test_arch]
anatofuz
parents:
diff changeset
83 dotest_cmd.extend(config.dotest_args_str.split(';'))
anatofuz
parents:
diff changeset
84
anatofuz
parents:
diff changeset
85 # Library path may be needed to locate just-built clang.
anatofuz
parents:
diff changeset
86 if config.llvm_libs_dir:
anatofuz
parents:
diff changeset
87 dotest_cmd += ['--env', 'LLVM_LIBS_DIR=' + config.llvm_libs_dir]
anatofuz
parents:
diff changeset
88
anatofuz
parents:
diff changeset
89 # Forward ASan-specific environment variables to tests, as a test may load an
anatofuz
parents:
diff changeset
90 # ASan-ified dylib.
anatofuz
parents:
diff changeset
91 for env_var in ('ASAN_OPTIONS', 'DYLD_INSERT_LIBRARIES'):
anatofuz
parents:
diff changeset
92 if env_var in config.environment:
anatofuz
parents:
diff changeset
93 dotest_cmd += ['--inferior-env', env_var + '=' + config.environment[env_var]]
anatofuz
parents:
diff changeset
94
anatofuz
parents:
diff changeset
95 if config.lldb_build_directory:
anatofuz
parents:
diff changeset
96 dotest_cmd += ['--build-dir', config.lldb_build_directory]
anatofuz
parents:
diff changeset
97
anatofuz
parents:
diff changeset
98 if config.lldb_module_cache:
anatofuz
parents:
diff changeset
99 dotest_cmd += ['--lldb-module-cache-dir', config.lldb_module_cache]
anatofuz
parents:
diff changeset
100
anatofuz
parents:
diff changeset
101 if config.clang_module_cache:
anatofuz
parents:
diff changeset
102 dotest_cmd += ['--clang-module-cache-dir', config.clang_module_cache]
anatofuz
parents:
diff changeset
103
anatofuz
parents:
diff changeset
104 if config.lldb_executable:
anatofuz
parents:
diff changeset
105 dotest_cmd += ['--executable', config.lldb_executable]
anatofuz
parents:
diff changeset
106
anatofuz
parents:
diff changeset
107 if config.test_compiler:
anatofuz
parents:
diff changeset
108 dotest_cmd += ['--compiler', config.test_compiler]
anatofuz
parents:
diff changeset
109
anatofuz
parents:
diff changeset
110 if config.dsymutil:
anatofuz
parents:
diff changeset
111 dotest_cmd += ['--dsymutil', config.dsymutil]
anatofuz
parents:
diff changeset
112
anatofuz
parents:
diff changeset
113 if config.filecheck:
anatofuz
parents:
diff changeset
114 dotest_cmd += ['--filecheck', config.filecheck]
anatofuz
parents:
diff changeset
115
anatofuz
parents:
diff changeset
116 if config.lldb_libs_dir:
anatofuz
parents:
diff changeset
117 dotest_cmd += ['--lldb-libs-dir', config.lldb_libs_dir]
anatofuz
parents:
diff changeset
118
anatofuz
parents:
diff changeset
119 # We don't want to force users passing arguments to lit to use `;` as a
anatofuz
parents:
diff changeset
120 # separator. We use Python's simple lexical analyzer to turn the args into a
anatofuz
parents:
diff changeset
121 # list. Pass there arguments last so they can override anything that was
anatofuz
parents:
diff changeset
122 # already configured.
anatofuz
parents:
diff changeset
123 if config.dotest_lit_args_str:
anatofuz
parents:
diff changeset
124 dotest_cmd.extend(shlex.split(config.dotest_lit_args_str))
anatofuz
parents:
diff changeset
125
anatofuz
parents:
diff changeset
126
anatofuz
parents:
diff changeset
127 # Load LLDB test format.
anatofuz
parents:
diff changeset
128 sys.path.append(os.path.join(config.lldb_src_root, "test", "API"))
anatofuz
parents:
diff changeset
129 import lldbtest
anatofuz
parents:
diff changeset
130
anatofuz
parents:
diff changeset
131 # testFormat: The test format to use to interpret tests.
anatofuz
parents:
diff changeset
132 config.test_format = lldbtest.LLDBTest(dotest_cmd)