summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Robinson <paul_robinson@playstation.sony.com>2014-03-21 18:13:35 +0000
committerPaul Robinson <paul_robinson@playstation.sony.com>2014-03-21 18:13:35 +0000
commitbf8d3a00d3acf68ea2cdbbcd69835d31d2e2f252 (patch)
tree254a619fb7dbe3aab72036d6829f7aaa1f716c97
parent8e2581b11e97713248c32ee2c305feaa456d2cbe (diff)
downloadbcm5719-llvm-bf8d3a00d3acf68ea2cdbbcd69835d31d2e2f252.tar.gz
bcm5719-llvm-bf8d3a00d3acf68ea2cdbbcd69835d31d2e2f252.zip
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
-rw-r--r--clang/test/lit.cfg34
1 files changed, 34 insertions, 0 deletions
diff --git a/clang/test/lit.cfg b/clang/test/lit.cfg
index f7acb2f1568..8d0ac80ebe6 100644
--- a/clang/test/lit.cfg
+++ b/clang/test/lit.cfg
@@ -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.
OpenPOWER on IntegriCloud