forked from OSchip/llvm-project
Revert r330755 "[lit] Report line number for failed RUN command"
It is causing many tests to fail on Windows buildbots: http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/10211 llvm-svn: 330848
This commit is contained in:
parent
b180eebed4
commit
1ca666886f
|
@ -85,8 +85,6 @@ OUTPUT OPTIONS
|
|||
Echo all commands to stdout, as they are being executed.
|
||||
This can be valuable for debugging test failures, as the last echoed command
|
||||
will be the one which has failed.
|
||||
To help you find the source RUN line, :program:`lit` inserts a no-op ``:``
|
||||
command with argument ``'RUN: at line N'`` before each command pipeline.
|
||||
This option implies ``--verbose``.
|
||||
|
||||
.. option:: -a, --show-all
|
||||
|
|
|
@ -789,13 +789,6 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper):
|
|||
results.append(cmdResult)
|
||||
return cmdResult.exitCode
|
||||
|
||||
if cmd.commands[0].args[0] == ':':
|
||||
if len(cmd.commands) != 1:
|
||||
raise InternalShellError(cmd.commands[0], "Unsupported: ':' "
|
||||
"cannot be part of a pipeline")
|
||||
results.append(ShellCommandResult(cmd.commands[0], '', '', 0, False))
|
||||
return 0;
|
||||
|
||||
procs = []
|
||||
default_stdin = subprocess.PIPE
|
||||
stderrTempFiles = []
|
||||
|
@ -1325,8 +1318,7 @@ class IntegratedTestKeywordParser(object):
|
|||
def parseLine(self, line_number, line):
|
||||
try:
|
||||
self.parsed_lines += [(line_number, line)]
|
||||
self.value = self.parser(line_number, line, self.value,
|
||||
self.keyword)
|
||||
self.value = self.parser(line_number, line, self.value)
|
||||
except ValueError as e:
|
||||
raise ValueError(str(e) + ("\nin %s directive on test line %d" %
|
||||
(self.keyword, line_number)))
|
||||
|
@ -1335,12 +1327,12 @@ class IntegratedTestKeywordParser(object):
|
|||
return self.value
|
||||
|
||||
@staticmethod
|
||||
def _handleTag(line_number, line, output, keyword):
|
||||
def _handleTag(line_number, line, output):
|
||||
"""A helper for parsing TAG type keywords"""
|
||||
return (not line.strip() or output)
|
||||
|
||||
@staticmethod
|
||||
def _handleCommand(line_number, line, output, keyword):
|
||||
def _handleCommand(line_number, line, output):
|
||||
"""A helper for parsing COMMAND type keywords"""
|
||||
# Trim trailing whitespace.
|
||||
line = line.rstrip()
|
||||
|
@ -1359,15 +1351,11 @@ class IntegratedTestKeywordParser(object):
|
|||
else:
|
||||
if output is None:
|
||||
output = []
|
||||
line = ": '{keyword} at line {line}'; {real_command}".format(
|
||||
keyword=keyword,
|
||||
line=line_number,
|
||||
real_command=line)
|
||||
output.append(line)
|
||||
return output
|
||||
|
||||
@staticmethod
|
||||
def _handleList(line_number, line, output, keyword):
|
||||
def _handleList(line_number, line, output):
|
||||
"""A parser for LIST type keywords"""
|
||||
if output is None:
|
||||
output = []
|
||||
|
@ -1375,7 +1363,7 @@ class IntegratedTestKeywordParser(object):
|
|||
return output
|
||||
|
||||
@staticmethod
|
||||
def _handleBooleanExpr(line_number, line, output, keyword):
|
||||
def _handleBooleanExpr(line_number, line, output):
|
||||
"""A parser for BOOLEAN_EXPR type keywords"""
|
||||
if output is None:
|
||||
output = []
|
||||
|
@ -1388,18 +1376,17 @@ class IntegratedTestKeywordParser(object):
|
|||
return output
|
||||
|
||||
@staticmethod
|
||||
def _handleRequiresAny(line_number, line, output, keyword):
|
||||
def _handleRequiresAny(line_number, line, output):
|
||||
"""A custom parser to transform REQUIRES-ANY: into REQUIRES:"""
|
||||
|
||||
# Extract the conditions specified in REQUIRES-ANY: as written.
|
||||
conditions = []
|
||||
IntegratedTestKeywordParser._handleList(line_number, line, conditions,
|
||||
keyword)
|
||||
IntegratedTestKeywordParser._handleList(line_number, line, conditions)
|
||||
|
||||
# Output a `REQUIRES: a || b || c` expression in its place.
|
||||
expression = ' || '.join(conditions)
|
||||
IntegratedTestKeywordParser._handleBooleanExpr(line_number, expression,
|
||||
output, keyword)
|
||||
IntegratedTestKeywordParser._handleBooleanExpr(line_number,
|
||||
expression, output)
|
||||
return output
|
||||
|
||||
def parseIntegratedTestScript(test, additional_parsers=[],
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
# RUN: true
|
||||
# RUN: false
|
||||
# RUN: true
|
|
@ -1,11 +0,0 @@
|
|||
# RUN: : first line continued \
|
||||
# RUN: to second line
|
||||
# RUN: echo 'foo bar' \
|
||||
# RUN: | FileCheck %s
|
||||
# RUN: echo \
|
||||
# RUN: 'foo baz' \
|
||||
# RUN: | FileCheck %s
|
||||
# RUN: echo 'foo bar' \
|
||||
# RUN: | FileCheck %s
|
||||
|
||||
# CHECK: foo bar
|
|
@ -1,2 +0,0 @@
|
|||
import lit.formats
|
||||
config.test_format = lit.formats.ShTest(execute_external=True)
|
|
@ -1,3 +0,0 @@
|
|||
# RUN: true
|
||||
# RUN: false
|
||||
# RUN: true
|
|
@ -1,11 +0,0 @@
|
|||
# RUN: : first line continued \
|
||||
# RUN: to second line
|
||||
# RUN: echo 'foo bar' \
|
||||
# RUN: | FileCheck %s
|
||||
# RUN: echo \
|
||||
# RUN: 'foo baz' \
|
||||
# RUN: | FileCheck %s
|
||||
# RUN: echo 'foo bar' \
|
||||
# RUN: | FileCheck %s
|
||||
|
||||
# CHECK: foo bar
|
|
@ -1,2 +0,0 @@
|
|||
import lit.formats
|
||||
config.test_format = lit.formats.ShTest(execute_external=False)
|
|
@ -1,3 +0,0 @@
|
|||
import lit.formats
|
||||
config.name = 'shtest-run-at-line'
|
||||
config.suffixes = ['.txt']
|
|
@ -1,3 +0,0 @@
|
|||
# Check error on an unsupported ":". (cannot be part of a pipeline)
|
||||
#
|
||||
# RUN: : | echo "hello"
|
|
@ -8,7 +8,7 @@
|
|||
#
|
||||
# END.
|
||||
|
||||
# CHECK: Failing Tests (27)
|
||||
# CHECK: Failing Tests (26)
|
||||
# CHECK: Failing Tests (1)
|
||||
# CHECK: Failing Tests (2)
|
||||
# CHECK: error: Setting --max-failures to 0 does not have any effect.
|
||||
|
|
|
@ -39,7 +39,6 @@
|
|||
#
|
||||
# CHECK: Command Output (stdout):
|
||||
# CHECK-NEXT: --
|
||||
# CHECK-NEXT: $ ":" "RUN: at line 1"
|
||||
# CHECK-NEXT: $ "printf"
|
||||
# CHECK-NEXT: # command output:
|
||||
# CHECK-NEXT: line 1: failed test output on stdout
|
||||
|
|
|
@ -16,15 +16,12 @@
|
|||
#
|
||||
# CHECK: Command Output
|
||||
# CHECK-NEXT: --
|
||||
# CHECK-NEXT: $ ":" "RUN: at line 1"
|
||||
# CHECK-NEXT: $ "true"
|
||||
# CHECK-NEXT: $ ":" "RUN: at line 2"
|
||||
# CHECK-NEXT: $ "echo" "hi"
|
||||
# CHECK-NEXT: # command output:
|
||||
# CHECK-NEXT: hi
|
||||
#
|
||||
# CHECK: $ ":" "RUN: at line 3"
|
||||
# CHECK-NEXT: $ "wc" "missing-file"
|
||||
# CHECK: $ "wc" "missing-file"
|
||||
# CHECK-NEXT: # redirected output from '{{.*(/|\\\\)}}basic.txt.tmp.out':
|
||||
# CHECK-NEXT: missing-file{{.*}} No such file or directory
|
||||
# CHECK: note: command had no output on stdout or stderr
|
||||
|
|
|
@ -1,74 +0,0 @@
|
|||
# Check that -vv makes the line number of the failing RUN command clear.
|
||||
# (-v is actually sufficient in the case of the internal shell.)
|
||||
#
|
||||
# RUN: not %{lit} -j 1 -vv %{inputs}/shtest-run-at-line > %t.out
|
||||
# RUN: FileCheck --input-file %t.out %s
|
||||
#
|
||||
# END.
|
||||
|
||||
|
||||
# CHECK: Testing: 4 tests
|
||||
|
||||
|
||||
# In the case of the external shell, we check for only RUN lines in stderr in
|
||||
# case some shell implementations format "set -x" output differently.
|
||||
|
||||
# CHECK-LABEL: FAIL: shtest-run-at-line :: external-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: Command Output (stderr)
|
||||
# CHECK: RUN: at line 1
|
||||
# CHECK: RUN: at line 2
|
||||
# CHECK-NOT: RUN
|
||||
|
||||
# CHECK-LABEL: FAIL: shtest-run-at-line :: external-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: Command Output (stderr)
|
||||
# CHECK: RUN: at line 1
|
||||
# CHECK: RUN: at line 3
|
||||
# CHECK: RUN: at line 5
|
||||
# CHECK-NOT: RUN
|
||||
|
||||
|
||||
# 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: Command Output (stdout)
|
||||
# CHECK: $ ":" "RUN: at line 1"
|
||||
# CHECK-NEXT: $ "true"
|
||||
# CHECK-NEXT: $ ":" "RUN: at line 2"
|
||||
# CHECK-NEXT: $ "false"
|
||||
# CHECK-NOT: RUN
|
||||
|
||||
# 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: Command Output (stdout)
|
||||
# CHECK: $ ":" "RUN: at line 1"
|
||||
# CHECK-NEXT: $ ":" "first" "line" "continued" "to" "second" "line"
|
||||
# CHECK-NEXT: $ ":" "RUN: at line 3"
|
||||
# CHECK-NEXT: $ "echo" "foo bar"
|
||||
# CHECK-NEXT: $ "FileCheck" "{{.*}}"
|
||||
# CHECK-NEXT: $ ":" "RUN: at line 5"
|
||||
# CHECK-NEXT: $ "echo" "foo baz"
|
||||
# CHECK-NEXT: $ "FileCheck" "{{.*}}"
|
||||
# CHECK-NOT: RUN
|
|
@ -26,14 +26,6 @@
|
|||
# CHECK: error: command failed with exit status: 1
|
||||
# CHECK: ***
|
||||
|
||||
# CHECK: FAIL: shtest-shell :: colon-error.txt
|
||||
# CHECK: *** TEST 'shtest-shell :: colon-error.txt' FAILED ***
|
||||
# CHECK: $ ":"
|
||||
# CHECK: # command stderr:
|
||||
# CHECK: Unsupported: ':' cannot be part of a pipeline
|
||||
# CHECK: error: command failed with exit status: 127
|
||||
# CHECK: ***
|
||||
|
||||
# CHECK: FAIL: shtest-shell :: diff-error-0.txt
|
||||
# CHECK: *** TEST 'shtest-shell :: diff-error-0.txt' FAILED ***
|
||||
# CHECK: $ "diff" "diff-error-0.txt" "diff-error-0.txt"
|
||||
|
@ -161,7 +153,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: 'echo "missing quote'
|
||||
# CHECK: ***
|
||||
|
||||
# CHECK: FAIL: shtest-shell :: error-2.txt
|
||||
|
@ -227,4 +219,4 @@
|
|||
# CHECK: PASS: shtest-shell :: sequencing-0.txt
|
||||
# CHECK: XFAIL: shtest-shell :: sequencing-1.txt
|
||||
# CHECK: PASS: shtest-shell :: valid-shell.txt
|
||||
# CHECK: Failing Tests (27)
|
||||
# CHECK: Failing Tests (26)
|
||||
|
|
|
@ -47,7 +47,7 @@ class TestIntegratedTestKeywordParser(unittest.TestCase):
|
|||
|
||||
@staticmethod
|
||||
def make_parsers():
|
||||
def custom_parse(line_number, line, output, keyword):
|
||||
def custom_parse(line_number, line, output):
|
||||
if output is None:
|
||||
output = []
|
||||
output += [part for part in line.split(' ') if part.strip()]
|
||||
|
@ -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(), ": 'MY_RUN: at line 4'; baz")
|
||||
self.assertEqual(value[1].strip(), ": 'MY_RUN: at line 7'; foo bar")
|
||||
self.assertEqual(value[0].strip(), 'baz')
|
||||
self.assertEqual(value[1].strip(), 'foo bar')
|
||||
|
||||
def test_custom(self):
|
||||
parsers = self.make_parsers()
|
||||
|
|
Loading…
Reference in New Issue