aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/tools/llvm-lit/chain.c9
-rw-r--r--utils/lit/lit/TestRunner.py15
2 files changed, 19 insertions, 5 deletions
diff --git a/test/tools/llvm-lit/chain.c b/test/tools/llvm-lit/chain.c
new file mode 100644
index 0000000..6f6541d
--- /dev/null
+++ b/test/tools/llvm-lit/chain.c
@@ -0,0 +1,9 @@
+// This test should fail. lit used to interpret this as:
+// (false && false) || true
+// instead of the intended
+// false && (false || true
+//
+// RUN: false
+// RUN: false || true
+//
+// XFAIL: *
diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py
index e339652..fa4880a 100644
--- a/utils/lit/lit/TestRunner.py
+++ b/utils/lit/lit/TestRunner.py
@@ -241,11 +241,16 @@ def executeShCmd(cmd, cfg, cwd, results):
return exitCode
def executeScriptInternal(test, litConfig, tmpBase, commands, cwd):
- ln = ' &&\n'.join(commands)
- try:
- cmd = ShUtil.ShParser(ln, litConfig.isWindows).parse()
- except:
- return (Test.FAIL, "shell parser error on: %r" % ln)
+ cmds = []
+ for ln in commands:
+ try:
+ cmds.append(ShUtil.ShParser(ln, litConfig.isWindows).parse())
+ except:
+ return (Test.FAIL, "shell parser error on: %r" % ln)
+
+ cmd = cmds[0]
+ for c in cmds[1:]:
+ cmd = ShUtil.Seq(cmd, '&&', c)
results = []
try: