[clang] [update_cc_test_checks] Use lit's shell to run commands (PR #65333)
Thomas Preud'homme via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 6 05:57:11 PDT 2023
================
@@ -306,52 +276,79 @@ def main():
run_list = []
line2func_list = collections.defaultdict(list)
- subs = {
- "%s": ti.path,
- "%t": tempfile.NamedTemporaryFile().name,
- "%S": os.path.dirname(ti.path),
- }
+ subs = [
+ ("%s", ti.path),
+ ("%t", tempfile.NamedTemporaryFile().name),
+ ("%S", os.path.dirname(ti.path)),
+ ]
for l in ti.run_lines:
- commands = [cmd.strip() for cmd in l.split("|")]
-
+ pipeline = ShParser(l, win32Escapes=False, pipefail=False).parse()
+ if not isinstance(pipeline, Pipeline):
+ # Could be a sequence separated by &&/||/; but we don't handle that yet.
+ print(
+ "WARNING: RUN: line is too complex for this script: ",
+ pipeline,
+ file=sys.stderr,
+ )
+ continue
triple_in_cmd = None
- m = common.TRIPLE_ARG_RE.search(commands[0])
+ clang_cmd: Command = pipeline.commands[0]
+ m = common.TRIPLE_ARG_RE.search(" ".join(clang_cmd.args))
if m:
triple_in_cmd = m.groups()[0]
+ # Do lit-like substitutions on the command and redirects.
+ for cmd in pipeline.commands:
+ if cmd.args[0] == "opt":
+ if ti.args.opt is None:
+ sys.exit(
+ ti.path + " needs to run opt. "
+ "Please specify --llvm-bin or --opt"
+ )
+ cmd.args[0] = ti.args.opt
+ cmd.args = [common.applySubstitutions(i, subs) for i in cmd.args]
+ for i, redirect in enumerate(cmd.redirects):
+ cmd.redirects[i] = redirect[0], common.applySubstitutions(
+ redirect[1], subs
+ )
+
# Parse executable args.
----------------
RoboTux wrote:
This comment should be removed.
https://github.com/llvm/llvm-project/pull/65333
More information about the cfe-commits
mailing list