diff options
| author | Joel E. Denny <jdenny.ornl@gmail.com> | 2018-05-30 21:07:27 +0000 | 
|---|---|---|
| committer | Joel E. Denny <jdenny.ornl@gmail.com> | 2018-05-30 21:07:27 +0000 | 
| commit | 71792c741ecb7bbddd04d2bf5e5147d82479304a (patch) | |
| tree | 4f45fde4c437fcd81f29ce52aa719b2c8a3e726d /llvm/utils/lit | |
| parent | 75e87c3f2a6fe3c922023c2c07b7e6df1d8a5b56 (diff) | |
| download | bcm5719-llvm-71792c741ecb7bbddd04d2bf5e5147d82479304a.tar.gz bcm5719-llvm-71792c741ecb7bbddd04d2bf5e5147d82479304a.zip  | |
Revert r333584: [lit] Report line number for failed RUN command
It breaks test-suite.
llvm-svn: 333592
Diffstat (limited to 'llvm/utils/lit')
16 files changed, 17 insertions, 186 deletions
diff --git a/llvm/utils/lit/lit/TestRunner.py b/llvm/utils/lit/lit/TestRunner.py index 968598914f6..a6f9276f94e 100644 --- a/llvm/utils/lit/lit/TestRunner.py +++ b/llvm/utils/lit/lit/TestRunner.py @@ -40,17 +40,6 @@ kUseCloseFDs = not kIsWindows  kAvoidDevNull = kIsWindows  kDevNull = "/dev/null" -# A regex that matches %dbg(ARG), which lit inserts at the beginning of each -# run command pipeline such that ARG specifies the pipeline's source line -# number.  lit later expands each %dbg(ARG) to a command that behaves as a null -# command in the target shell so that the line number is seen in lit's verbose -# mode. -# -# This regex captures ARG.  ARG must not contain a right parenthesis, which -# terminates %dbg.  ARG must not contain quotes, in which ARG might be enclosed -# during expansion. -kPdbgRegex = '%dbg\(([^)\'"]*)\)' -  class ShellEnvironment(object):      """Mutable shell environment containing things like CWD and env vars. @@ -800,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 = [] @@ -999,7 +981,6 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper):      return exitCode  def executeScriptInternal(test, litConfig, tmpBase, commands, cwd): -    commands = applySubstitutions(commands, [(kPdbgRegex, ": '\\1'")])      cmds = []      for ln in commands:          try: @@ -1070,7 +1051,7 @@ def executeScriptInternal(test, litConfig, tmpBase, commands, cwd):              out += 'error: command reached timeout: %s\n' % (                  str(result.timeoutReached),) -    return out, err, exitCode, timeoutInfo, commands +    return out, err, exitCode, timeoutInfo  def executeScript(test, litConfig, tmpBase, commands, cwd):      bashPath = litConfig.getBashPath() @@ -1085,15 +1066,9 @@ def executeScript(test, litConfig, tmpBase, commands, cwd):        mode += 'b'  # Avoid CRLFs when writing bash scripts.      f = open(script, mode)      if isWin32CMDEXE: -        commands = applySubstitutions(commands, [(kPdbgRegex, -                                                  "echo '\\1' > nul")]) -        if litConfig.echo_all_commands: -            f.write('@echo on\n') -        else: -            f.write('@echo off\n') -        f.write('\n@if %ERRORLEVEL% NEQ 0 EXIT\n'.join(commands)) +        f.write('@echo off\n') +        f.write('\nif %ERRORLEVEL% NEQ 0 EXIT\n'.join(commands))      else: -        commands = applySubstitutions(commands, [(kPdbgRegex, ": '\\1'")])          if test.config.pipefail:              f.write('set -o pipefail;')          if litConfig.echo_all_commands: @@ -1118,9 +1093,9 @@ def executeScript(test, litConfig, tmpBase, commands, cwd):          out, err, exitCode = lit.util.executeCommand(command, cwd=cwd,                                         env=test.config.environment,                                         timeout=litConfig.maxIndividualTestTime) -        return (out, err, exitCode, None, commands) +        return (out, err, exitCode, None)      except lit.util.ExecuteCommandTimeoutException as e: -        return (e.out, e.err, e.exitCode, e.msg, commands) +        return (e.out, e.err, e.exitCode, e.msg)  def parseIntegratedTestScriptCommands(source_path, keywords):      """ @@ -1240,14 +1215,14 @@ def getDefaultSubstitutions(test, tmpDir, tmpBase, normalize_slashes=False):              ])      return substitutions -def applySubstitutions(script, substitutions, escapeForWindows=False): +def applySubstitutions(script, substitutions):      """Apply substitutions to the script.  Allow full regular expression syntax.      Replace each matching occurrence of regular expression pattern a with      substitution b in line ln."""      def processLine(ln):          # Apply substitutions          for a,b in substitutions: -            if kIsWindows and escapeForWindows: +            if kIsWindows:                  b = b.replace("\\","\\\\")              ln = re.sub(a, b, ln) @@ -1326,9 +1301,7 @@ class IntegratedTestKeywordParser(object):          self.parser = parser          if kind == ParserKind.COMMAND: -            self.parser = lambda line_number, line, output: \ -                                 self._handleCommand(line_number, line, output, -                                                     self.keyword) +            self.parser = self._handleCommand          elif kind == ParserKind.LIST:              self.parser = self._handleList          elif kind == ParserKind.BOOLEAN_EXPR: @@ -1359,7 +1332,7 @@ class IntegratedTestKeywordParser(object):          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() @@ -1378,14 +1351,6 @@ class IntegratedTestKeywordParser(object):          else:              if output is None:                  output = [] -            pdbg = "%dbg({keyword} at line {line_number})".format( -                keyword=keyword, -                line_number=line_number) -            assert re.match(kPdbgRegex + "$", pdbg), \ -                   "kPdbgRegex expected to match actual %dbg usage" -            line = "{pdbg} && {real_command}".format( -                pdbg=pdbg, -                real_command=line)              output.append(line)          return output @@ -1524,7 +1489,7 @@ def _runShTest(test, litConfig, useExternalSh, script, tmpBase):      if isinstance(res, lit.Test.Result):          return res -    out,err,exitCode,timeoutInfo,script = res +    out,err,exitCode,timeoutInfo = res      if exitCode == 0:          status = Test.PASS      else: @@ -1565,7 +1530,7 @@ def executeShTest(test, litConfig, useExternalSh,      substitutions = list(extra_substitutions)      substitutions += getDefaultSubstitutions(test, tmpDir, tmpBase,                                               normalize_slashes=useExternalSh) -    script = applySubstitutions(script, substitutions, True) +    script = applySubstitutions(script, substitutions)      # Re-run failed tests up to test_retry_attempts times.      attempts = 1 diff --git a/llvm/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/basic.txt b/llvm/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/basic.txt deleted file mode 100644 index a359c996660..00000000000 --- a/llvm/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/basic.txt +++ /dev/null @@ -1,6 +0,0 @@ -# These commands must run under both bash and windows cmd.exe (with GnuWin32 -# tools). - -# RUN: true -# RUN: false -# RUN: true diff --git a/llvm/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/line-continuation.txt b/llvm/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/line-continuation.txt deleted file mode 100644 index b11f0d759fe..00000000000 --- a/llvm/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/line-continuation.txt +++ /dev/null @@ -1,12 +0,0 @@ -# These commands must run under both bash and windows cmd.exe (with GnuWin32 -# tools). - -# 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 diff --git a/llvm/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/lit.local.cfg b/llvm/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/lit.local.cfg deleted file mode 100644 index 5e87c729919..00000000000 --- a/llvm/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/lit.local.cfg +++ /dev/null @@ -1,2 +0,0 @@ -import lit.formats -config.test_format = lit.formats.ShTest(execute_external=True) diff --git a/llvm/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/basic.txt b/llvm/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/basic.txt deleted file mode 100644 index ba2695431bd..00000000000 --- a/llvm/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/basic.txt +++ /dev/null @@ -1,3 +0,0 @@ -# RUN: true -# RUN: false -# RUN: true diff --git a/llvm/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/line-continuation.txt b/llvm/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/line-continuation.txt deleted file mode 100644 index 1e00bcb9616..00000000000 --- a/llvm/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/line-continuation.txt +++ /dev/null @@ -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 diff --git a/llvm/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/lit.local.cfg b/llvm/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/lit.local.cfg deleted file mode 100644 index b76b7a24c99..00000000000 --- a/llvm/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/lit.local.cfg +++ /dev/null @@ -1,2 +0,0 @@ -import lit.formats -config.test_format = lit.formats.ShTest(execute_external=False) diff --git a/llvm/utils/lit/tests/Inputs/shtest-run-at-line/lit.cfg b/llvm/utils/lit/tests/Inputs/shtest-run-at-line/lit.cfg deleted file mode 100644 index f4c7921b732..00000000000 --- a/llvm/utils/lit/tests/Inputs/shtest-run-at-line/lit.cfg +++ /dev/null @@ -1,2 +0,0 @@ -config.name = 'shtest-run-at-line' -config.suffixes = ['.txt'] diff --git a/llvm/utils/lit/tests/Inputs/shtest-shell/colon-error.txt b/llvm/utils/lit/tests/Inputs/shtest-shell/colon-error.txt deleted file mode 100644 index 8b84c08ce09..00000000000 --- a/llvm/utils/lit/tests/Inputs/shtest-shell/colon-error.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Check error on an unsupported ":". (cannot be part of a pipeline) -# -# RUN: : | echo "hello" diff --git a/llvm/utils/lit/tests/lit.cfg b/llvm/utils/lit/tests/lit.cfg index a5ccc2c067e..75d1b5eac85 100644 --- a/llvm/utils/lit/tests/lit.cfg +++ b/llvm/utils/lit/tests/lit.cfg @@ -71,14 +71,3 @@ for attribute in ('llvm_tools_dir', 'lit_tools_dir'):      if directory:          path = os.path.pathsep.join((directory, path))  config.environment['PATH'] = path - -# These substitutions are needed only in tests where the external shell is used -# and could be either bash or windows cmd.exe.  Substitutions are expected to -# be expanded in double quotes. -isWin32CMDEXE = lit_config.isWindows and not lit_config.getBashPath() -if isWin32CMDEXE: -    config.substitutions.append(('%{pdbg0}', "echo '")) -    config.substitutions.append(('%{pdbg1}', "' > nul")) -else: -    config.substitutions.append(('%{pdbg0}', ": '")) -    config.substitutions.append(('%{pdbg1}', "'")) diff --git a/llvm/utils/lit/tests/max-failures.py b/llvm/utils/lit/tests/max-failures.py index ca107bc29b9..1613eee8b5c 100644 --- a/llvm/utils/lit/tests/max-failures.py +++ b/llvm/utils/lit/tests/max-failures.py @@ -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. diff --git a/llvm/utils/lit/tests/shtest-format.py b/llvm/utils/lit/tests/shtest-format.py index 33ed2fe44d6..94d74e3a920 100644 --- a/llvm/utils/lit/tests/shtest-format.py +++ b/llvm/utils/lit/tests/shtest-format.py @@ -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 diff --git a/llvm/utils/lit/tests/shtest-output-printing.py b/llvm/utils/lit/tests/shtest-output-printing.py index 2344ef20036..2a85cf975c9 100644 --- a/llvm/utils/lit/tests/shtest-output-printing.py +++ b/llvm/utils/lit/tests/shtest-output-printing.py @@ -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 diff --git a/llvm/utils/lit/tests/shtest-run-at-line.py b/llvm/utils/lit/tests/shtest-run-at-line.py deleted file mode 100644 index adb7af81812..00000000000 --- a/llvm/utils/lit/tests/shtest-run-at-line.py +++ /dev/null @@ -1,70 +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 -Dpdbg0="%{pdbg0}" -Dpdbg1="%{pdbg1}" %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:      [[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 -# CHECK-NOT: RUN - -# 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:     RUN: at line 4 -# CHECK:     RUN: at line 6 -# 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 diff --git a/llvm/utils/lit/tests/shtest-shell.py b/llvm/utils/lit/tests/shtest-shell.py index 016d1f6f108..b3d55a0c6a9 100644 --- a/llvm/utils/lit/tests/shtest-shell.py +++ b/llvm/utils/lit/tests/shtest-shell.py @@ -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) diff --git a/llvm/utils/lit/tests/unit/TestRunner.py b/llvm/utils/lit/tests/unit/TestRunner.py index 4ade359790c..874bf275d4e 100644 --- a/llvm/utils/lit/tests/unit/TestRunner.py +++ b/llvm/utils/lit/tests/unit/TestRunner.py @@ -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(), 'baz') +        self.assertEqual(value[1].strip(), 'foo  bar')      def test_custom(self):          parsers = self.make_parsers()  | 

