diff options
| author | Paul Robinson <paul_robinson@playstation.sony.com> | 2014-03-21 18:13:35 +0000 |
|---|---|---|
| committer | Paul Robinson <paul_robinson@playstation.sony.com> | 2014-03-21 18:13:35 +0000 |
| commit | bf8d3a00d3acf68ea2cdbbcd69835d31d2e2f252 (patch) | |
| tree | 254a619fb7dbe3aab72036d6829f7aaa1f716c97 | |
| parent | 8e2581b11e97713248c32ee2c305feaa456d2cbe (diff) | |
| download | bcm5719-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.cfg | 34 |
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. |

