annotate clang-tools-extra/test/lit.cfg.py @ 227:21e6aa2e49ef

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 19 Jul 2021 06:57:16 +0900
parents 2e18cbf3894f
children c4bab56944e8
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 import os
anatofuz
parents:
diff changeset
4 import platform
anatofuz
parents:
diff changeset
5 import re
anatofuz
parents:
diff changeset
6 import subprocess
anatofuz
parents:
diff changeset
7
anatofuz
parents:
diff changeset
8 import lit.formats
anatofuz
parents:
diff changeset
9 import lit.util
anatofuz
parents:
diff changeset
10
anatofuz
parents:
diff changeset
11 # Configuration file for the 'lit' test runner.
anatofuz
parents:
diff changeset
12
anatofuz
parents:
diff changeset
13 # name: The name of this test suite.
anatofuz
parents:
diff changeset
14 config.name = 'Clang Tools'
anatofuz
parents:
diff changeset
15
anatofuz
parents:
diff changeset
16 # Tweak PATH for Win32
anatofuz
parents:
diff changeset
17 if platform.system() == 'Windows':
anatofuz
parents:
diff changeset
18 # Seek sane tools in directories and set to $PATH.
anatofuz
parents:
diff changeset
19 path = getattr(config, 'lit_tools_dir', None)
anatofuz
parents:
diff changeset
20 path = lit_config.getToolsPath(path,
anatofuz
parents:
diff changeset
21 config.environment['PATH'],
anatofuz
parents:
diff changeset
22 ['cmp.exe', 'grep.exe', 'sed.exe'])
anatofuz
parents:
diff changeset
23 if path is not None:
anatofuz
parents:
diff changeset
24 path = os.path.pathsep.join((path,
anatofuz
parents:
diff changeset
25 config.environment['PATH']))
anatofuz
parents:
diff changeset
26 config.environment['PATH'] = path
anatofuz
parents:
diff changeset
27
anatofuz
parents:
diff changeset
28 # Choose between lit's internal shell pipeline runner and a real shell. If
anatofuz
parents:
diff changeset
29 # LIT_USE_INTERNAL_SHELL is in the environment, we use that as an override.
anatofuz
parents:
diff changeset
30 use_lit_shell = os.environ.get("LIT_USE_INTERNAL_SHELL")
anatofuz
parents:
diff changeset
31 if use_lit_shell:
anatofuz
parents:
diff changeset
32 # 0 is external, "" is default, and everything else is internal.
anatofuz
parents:
diff changeset
33 execute_external = (use_lit_shell == "0")
anatofuz
parents:
diff changeset
34 else:
anatofuz
parents:
diff changeset
35 # Otherwise we default to internal on Windows and external elsewhere, as
anatofuz
parents:
diff changeset
36 # bash on Windows is usually very slow.
anatofuz
parents:
diff changeset
37 execute_external = (not sys.platform in ['win32'])
anatofuz
parents:
diff changeset
38
anatofuz
parents:
diff changeset
39 # testFormat: The test format to use to interpret tests.
anatofuz
parents:
diff changeset
40 #
anatofuz
parents:
diff changeset
41 # For now we require '&&' between commands, until they get globally killed and
anatofuz
parents:
diff changeset
42 # the test runner updated.
anatofuz
parents:
diff changeset
43 config.test_format = lit.formats.ShTest(execute_external)
anatofuz
parents:
diff changeset
44
anatofuz
parents:
diff changeset
45 # suffixes: A list of file extensions to treat as test files.
anatofuz
parents:
diff changeset
46 config.suffixes = ['.c', '.cpp', '.hpp', '.m', '.mm', '.cu', '.ll', '.cl', '.s',
anatofuz
parents:
diff changeset
47 '.modularize', '.module-map-checker', '.test']
anatofuz
parents:
diff changeset
48
anatofuz
parents:
diff changeset
49 # Test-time dependencies located in directories called 'Inputs' are excluded
anatofuz
parents:
diff changeset
50 # from test suites; there won't be any lit tests within them.
anatofuz
parents:
diff changeset
51 config.excludes = ['Inputs']
anatofuz
parents:
diff changeset
52
anatofuz
parents:
diff changeset
53 # test_source_root: The root path where tests are located.
anatofuz
parents:
diff changeset
54 config.test_source_root = os.path.dirname(__file__)
anatofuz
parents:
diff changeset
55
anatofuz
parents:
diff changeset
56 # test_exec_root: The root path where tests should be run.
anatofuz
parents:
diff changeset
57 config.test_exec_root = os.path.join(config.clang_tools_binary_dir, 'test')
anatofuz
parents:
diff changeset
58
anatofuz
parents:
diff changeset
59 # Clear some environment variables that might affect Clang.
anatofuz
parents:
diff changeset
60 #
anatofuz
parents:
diff changeset
61 # This first set of vars are read by Clang, but shouldn't affect tests
anatofuz
parents:
diff changeset
62 # that aren't specifically looking for these features, or are required
anatofuz
parents:
diff changeset
63 # simply to run the tests at all.
anatofuz
parents:
diff changeset
64 #
anatofuz
parents:
diff changeset
65 # FIXME: Should we have a tool that enforces this?
anatofuz
parents:
diff changeset
66
anatofuz
parents:
diff changeset
67 # safe_env_vars = ('TMPDIR', 'TEMP', 'TMP', 'USERPROFILE', 'PWD',
anatofuz
parents:
diff changeset
68 # 'MACOSX_DEPLOYMENT_TARGET', 'IPHONEOS_DEPLOYMENT_TARGET',
anatofuz
parents:
diff changeset
69 # 'IOS_SIMULATOR_DEPLOYMENT_TARGET',
anatofuz
parents:
diff changeset
70 # 'VCINSTALLDIR', 'VC100COMNTOOLS', 'VC90COMNTOOLS',
anatofuz
parents:
diff changeset
71 # 'VC80COMNTOOLS')
anatofuz
parents:
diff changeset
72 possibly_dangerous_env_vars = ['COMPILER_PATH', 'RC_DEBUG_OPTIONS',
anatofuz
parents:
diff changeset
73 'CINDEXTEST_PREAMBLE_FILE', 'LIBRARY_PATH',
anatofuz
parents:
diff changeset
74 'CPATH', 'C_INCLUDE_PATH', 'CPLUS_INCLUDE_PATH',
anatofuz
parents:
diff changeset
75 'OBJC_INCLUDE_PATH', 'OBJCPLUS_INCLUDE_PATH',
anatofuz
parents:
diff changeset
76 'LIBCLANG_TIMING', 'LIBCLANG_OBJTRACKING',
anatofuz
parents:
diff changeset
77 'LIBCLANG_LOGGING', 'LIBCLANG_BGPRIO_INDEX',
anatofuz
parents:
diff changeset
78 'LIBCLANG_BGPRIO_EDIT', 'LIBCLANG_NOTHREADS',
anatofuz
parents:
diff changeset
79 'LIBCLANG_RESOURCE_USAGE',
anatofuz
parents:
diff changeset
80 'LIBCLANG_CODE_COMPLETION_LOGGING']
anatofuz
parents:
diff changeset
81 # Clang/Win32 may refer to %INCLUDE%. vsvarsall.bat sets it.
anatofuz
parents:
diff changeset
82 if platform.system() != 'Windows':
anatofuz
parents:
diff changeset
83 possibly_dangerous_env_vars.append('INCLUDE')
anatofuz
parents:
diff changeset
84 for name in possibly_dangerous_env_vars:
anatofuz
parents:
diff changeset
85 if name in config.environment:
anatofuz
parents:
diff changeset
86 del config.environment[name]
anatofuz
parents:
diff changeset
87
anatofuz
parents:
diff changeset
88 # Tweak the PATH to include the tools dir and the scripts dir.
anatofuz
parents:
diff changeset
89 path = os.path.pathsep.join((
anatofuz
parents:
diff changeset
90 config.clang_tools_dir, config.llvm_tools_dir, config.environment['PATH']))
anatofuz
parents:
diff changeset
91 config.environment['PATH'] = path
anatofuz
parents:
diff changeset
92
anatofuz
parents:
diff changeset
93 path = os.path.pathsep.join((config.clang_libs_dir, config.llvm_libs_dir,
anatofuz
parents:
diff changeset
94 config.environment.get('LD_LIBRARY_PATH','')))
anatofuz
parents:
diff changeset
95 config.environment['LD_LIBRARY_PATH'] = path
anatofuz
parents:
diff changeset
96
anatofuz
parents:
diff changeset
97 # When running under valgrind, we mangle '-vg' onto the end of the triple so we
anatofuz
parents:
diff changeset
98 # can check it with XFAIL and XTARGET.
anatofuz
parents:
diff changeset
99 if lit_config.useValgrind:
anatofuz
parents:
diff changeset
100 config.target_triple += '-vg'
anatofuz
parents:
diff changeset
101
anatofuz
parents:
diff changeset
102 config.available_features.add('crash-recovery')
anatofuz
parents:
diff changeset
103 # Set available features we allow tests to conditionalize on.
anatofuz
parents:
diff changeset
104 #
anatofuz
parents:
diff changeset
105
anatofuz
parents:
diff changeset
106 # Shell execution
anatofuz
parents:
diff changeset
107 if execute_external:
anatofuz
parents:
diff changeset
108 config.available_features.add('shell')
anatofuz
parents:
diff changeset
109
anatofuz
parents:
diff changeset
110 # Exclude MSYS due to transforming '/' to 'X:/mingwroot/'.
anatofuz
parents:
diff changeset
111 if not platform.system() in ['Windows'] or not execute_external:
anatofuz
parents:
diff changeset
112 config.available_features.add('shell-preserves-root')
anatofuz
parents:
diff changeset
113
anatofuz
parents:
diff changeset
114 # ANSI escape sequences in non-dumb terminal
anatofuz
parents:
diff changeset
115 if platform.system() not in ['Windows']:
anatofuz
parents:
diff changeset
116 config.available_features.add('ansi-escape-sequences')
anatofuz
parents:
diff changeset
117
207
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
118 if config.clang_tidy_staticanalyzer:
150
anatofuz
parents:
diff changeset
119 config.available_features.add('static-analyzer')
anatofuz
parents:
diff changeset
120
anatofuz
parents:
diff changeset
121 # Get shlex.quote if available (added in 3.3), and fall back to pipes.quote if
anatofuz
parents:
diff changeset
122 # it's not available.
anatofuz
parents:
diff changeset
123 try:
anatofuz
parents:
diff changeset
124 import shlex
anatofuz
parents:
diff changeset
125 sh_quote = shlex.quote
anatofuz
parents:
diff changeset
126 except:
anatofuz
parents:
diff changeset
127 import pipes
anatofuz
parents:
diff changeset
128 sh_quote = pipes.quote
anatofuz
parents:
diff changeset
129 python_exec = sh_quote(config.python_executable)
anatofuz
parents:
diff changeset
130
anatofuz
parents:
diff changeset
131 check_clang_tidy = os.path.join(
anatofuz
parents:
diff changeset
132 config.test_source_root, "clang-tidy", "check_clang_tidy.py")
anatofuz
parents:
diff changeset
133 config.substitutions.append(
anatofuz
parents:
diff changeset
134 ('%check_clang_tidy',
anatofuz
parents:
diff changeset
135 '%s %s' % (python_exec, check_clang_tidy)) )
anatofuz
parents:
diff changeset
136 clang_tidy_diff = os.path.join(
anatofuz
parents:
diff changeset
137 config.test_source_root, "..", "clang-tidy", "tool", "clang-tidy-diff.py")
anatofuz
parents:
diff changeset
138 config.substitutions.append(
anatofuz
parents:
diff changeset
139 ('%clang_tidy_diff',
anatofuz
parents:
diff changeset
140 '%s %s' % (python_exec, clang_tidy_diff)) )
anatofuz
parents:
diff changeset
141 run_clang_tidy = os.path.join(
anatofuz
parents:
diff changeset
142 config.test_source_root, "..", "clang-tidy", "tool", "run-clang-tidy.py")
anatofuz
parents:
diff changeset
143 config.substitutions.append(
anatofuz
parents:
diff changeset
144 ('%run_clang_tidy',
anatofuz
parents:
diff changeset
145 '%s %s' % (python_exec, run_clang_tidy)) )
anatofuz
parents:
diff changeset
146
anatofuz
parents:
diff changeset
147 clangd_benchmarks_dir = os.path.join(os.path.dirname(config.clang_tools_dir),
anatofuz
parents:
diff changeset
148 "tools", "clang", "tools", "extra",
anatofuz
parents:
diff changeset
149 "clangd", "benchmarks")
anatofuz
parents:
diff changeset
150 config.substitutions.append(('%clangd-benchmark-dir',
anatofuz
parents:
diff changeset
151 '%s' % (clangd_benchmarks_dir)))