[lit] Terminate ": RUN at line N" with ";" not "&&"

This fixes projects/compiler-rt/test/fuzzer/sigusr.test, which was
broken by r333614.  The trouble was that "&&" changes the command for
which "$!" gives the pid.

llvm-svn: 333620
This commit is contained in:
Joel E. Denny 2018-05-31 03:40:37 +00:00
parent 5952576de5
commit fc01dd281d
4 changed files with 20 additions and 20 deletions

View File

@ -1001,7 +1001,7 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper):
def executeScriptInternal(test, litConfig, tmpBase, commands, cwd):
cmds = []
for i, ln in enumerate(commands):
ln = commands[i] = re.sub(kPdbgRegex, ": '\\1'", ln)
ln = commands[i] = re.sub(kPdbgRegex, ": '\\1'; ", ln)
try:
cmds.append(ShUtil.ShParser(ln, litConfig.isWindows,
test.config.pipefail).parse())
@ -1086,7 +1086,7 @@ def executeScript(test, litConfig, tmpBase, commands, cwd):
f = open(script, mode)
if isWin32CMDEXE:
for i, ln in enumerate(commands):
commands[i] = re.sub(kPdbgRegex, "echo '\\1' > nul", ln)
commands[i] = re.sub(kPdbgRegex, "echo '\\1' > nul && ", ln)
if litConfig.echo_all_commands:
f.write('@echo on\n')
else:
@ -1094,7 +1094,7 @@ def executeScript(test, litConfig, tmpBase, commands, cwd):
f.write('\n@if %ERRORLEVEL% NEQ 0 EXIT\n'.join(commands))
else:
for i, ln in enumerate(commands):
commands[i] = re.sub(kPdbgRegex, ": '\\1'", ln)
commands[i] = re.sub(kPdbgRegex, ": '\\1'; ", ln)
if test.config.pipefail:
f.write('set -o pipefail;')
if litConfig.echo_all_commands:
@ -1384,7 +1384,7 @@ class IntegratedTestKeywordParser(object):
line_number=line_number)
assert re.match(kPdbgRegex + "$", pdbg), \
"kPdbgRegex expected to match actual %dbg usage"
line = "{pdbg} && {real_command}".format(
line = "{pdbg} {real_command}".format(
pdbg=pdbg,
real_command=line)
output.append(line)

View File

@ -16,9 +16,9 @@
# CHECK-LABEL: FAIL: shtest-run-at-line :: external-shell/basic.txt
# CHECK: Script:
# CHECK: [[pdbg0]]RUN: at line 4[[pdbg1]] && true
# CHECK-NEXT: [[pdbg0]]RUN: at line 5[[pdbg1]] && false
# CHECK-NEXT: [[pdbg0]]RUN: at line 6[[pdbg1]] && true
# CHECK: [[pdbg0]]RUN: at line 4[[pdbg1]]; true
# CHECK-NEXT: [[pdbg0]]RUN: at line 5[[pdbg1]]; false
# CHECK-NEXT: [[pdbg0]]RUN: at line 6[[pdbg1]]; true
# CHECK: RUN: at line 4
# CHECK: RUN: at line 5
@ -27,9 +27,9 @@
# CHECK-LABEL: FAIL: shtest-run-at-line :: external-shell/line-continuation.txt
# CHECK: Script:
# CHECK: [[pdbg0]]RUN: at line 4[[pdbg1]] && echo 'foo bar' | FileCheck
# CHECK-NEXT: [[pdbg0]]RUN: at line 6[[pdbg1]] && echo 'foo baz' | FileCheck
# CHECK-NEXT: [[pdbg0]]RUN: at line 9[[pdbg1]] && echo 'foo bar' | FileCheck
# CHECK: [[pdbg0]]RUN: at line 4[[pdbg1]]; echo 'foo bar' | FileCheck
# CHECK-NEXT: [[pdbg0]]RUN: at line 6[[pdbg1]]; echo 'foo baz' | FileCheck
# CHECK-NEXT: [[pdbg0]]RUN: at line 9[[pdbg1]]; echo 'foo bar' | FileCheck
# CHECK: RUN: at line 4
# CHECK: RUN: at line 6
@ -39,9 +39,9 @@
# CHECK-LABEL: FAIL: shtest-run-at-line :: internal-shell/basic.txt
# CHECK: Script:
# CHECK: : 'RUN: at line 1' && true
# CHECK-NEXT: : 'RUN: at line 2' && false
# CHECK-NEXT: : 'RUN: at line 3' && true
# CHECK: : 'RUN: at line 1'; true
# CHECK-NEXT: : 'RUN: at line 2'; false
# CHECK-NEXT: : 'RUN: at line 3'; true
# CHECK: Command Output (stdout)
# CHECK: $ ":" "RUN: at line 1"
@ -53,10 +53,10 @@
# CHECK-LABEL: FAIL: shtest-run-at-line :: internal-shell/line-continuation.txt
# CHECK: Script:
# CHECK: : 'RUN: at line 1' && : first line continued to second line
# CHECK-NEXT: : 'RUN: at line 3' && echo 'foo bar' | FileCheck
# CHECK-NEXT: : 'RUN: at line 5' && echo 'foo baz' | FileCheck
# CHECK-NEXT: : 'RUN: at line 8' && echo 'foo bar' | FileCheck
# CHECK: : 'RUN: at line 1'; : first line continued to second line
# CHECK-NEXT: : 'RUN: at line 3'; echo 'foo bar' | FileCheck
# CHECK-NEXT: : 'RUN: at line 5'; echo 'foo baz' | FileCheck
# CHECK-NEXT: : 'RUN: at line 8'; echo 'foo bar' | FileCheck
# CHECK: Command Output (stdout)
# CHECK: $ ":" "RUN: at line 1"

View File

@ -161,7 +161,7 @@
#
# CHECK: FAIL: shtest-shell :: error-1.txt
# CHECK: *** TEST 'shtest-shell :: error-1.txt' FAILED ***
# CHECK: shell parser error on: ': \'RUN: at line 3\' && echo "missing quote'
# CHECK: shell parser error on: ': \'RUN: at line 3\'; echo "missing quote'
# CHECK: ***
# CHECK: FAIL: shtest-shell :: error-2.txt

View File

@ -99,8 +99,8 @@ class TestIntegratedTestKeywordParser(unittest.TestCase):
cmd_parser = self.get_parser(parsers, 'MY_RUN:')
value = cmd_parser.getValue()
self.assertEqual(len(value), 2) # there are only two run lines
self.assertEqual(value[0].strip(), "%dbg(MY_RUN: at line 4) && baz")
self.assertEqual(value[1].strip(), "%dbg(MY_RUN: at line 7) && foo bar")
self.assertEqual(value[0].strip(), "%dbg(MY_RUN: at line 4) baz")
self.assertEqual(value[1].strip(), "%dbg(MY_RUN: at line 7) foo bar")
def test_custom(self):
parsers = self.make_parsers()