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 ',
|
(' %clang-cl ',
|
||||||
"""*** invalid substitution, use '%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.
|
# Set available features we allow tests to conditionalize on.
|
||||||
|
|
Loading…
Reference in New Issue