forked from OSchip/llvm-project
Make clang/test/lit.cfg pre-scan the RUN line looking for tool names,
and substitute fully qualified path names pointing to the build directory. This ensures we're testing the just-built tools. llvm-svn: 204493
This commit is contained in:
parent
8e2581b11e
commit
bf8d3a00d3
|
@ -288,6 +288,40 @@ config.substitutions.append(
|
|||
(' %clang-cl ',
|
||||
"""*** invalid substitution, use '%clang_cl'. ***""") )
|
||||
|
||||
# For each occurrence of a clang tool name as its own word, replace it
|
||||
# with the full path to the build directory holding that tool. This
|
||||
# ensures that we are testing the tools just built and not some random
|
||||
# tools that might happen to be in the user's PATH.
|
||||
# For example, don't match 'clang-check-' or '.clang-format'.
|
||||
# Regex assertions to reject neighbor hyphens/dots (seen in some tests).
|
||||
NoPreHyphenDot = r"(?<!(-|\.))"
|
||||
NoPostHyphenDot = r"(?!(-|\.))"
|
||||
|
||||
for pattern in [r"\bFileCheck\b",
|
||||
r"\bc-index-test\b",
|
||||
NoPreHyphenDot + r"\bclang-check\b" + NoPostHyphenDot,
|
||||
NoPreHyphenDot + r"\bclang-format\b" + NoPostHyphenDot,
|
||||
# FIXME: Some clang test uses opt?
|
||||
NoPreHyphenDot + r"\bopt\b" + NoPostHyphenDot,
|
||||
# Handle these specially as they are strings searched
|
||||
# for during testing.
|
||||
r"\| \bcount\b",
|
||||
r"\| \bnot\b"]:
|
||||
# Extract the tool name from the pattern. This relies on the tool
|
||||
# name being surrounded by \b word match operators. If the
|
||||
# pattern starts with "| ", include it in the string to be
|
||||
# substituted.
|
||||
tool_match = re.match(r"^(\\)?((\| )?)\W+b([0-9A-Za-z-_]+)\\b\W*$",
|
||||
pattern)
|
||||
tool_pipe = tool_match.group(2)
|
||||
tool_name = tool_match.group(4)
|
||||
tool_path = lit.util.which(tool_name, llvm_tools_dir)
|
||||
if not tool_path:
|
||||
# Warn, but still provide a substitution.
|
||||
lit_config.note('Did not find ' + tool_name + ' in ' + llvm_tools_dir)
|
||||
tool_path = llvm_tools_dir + '/' + tool_name
|
||||
config.substitutions.append((pattern, tool_pipe + tool_path))
|
||||
|
||||
###
|
||||
|
||||
# Set available features we allow tests to conditionalize on.
|
||||
|
|
Loading…
Reference in New Issue