[llvm] r333614 - [lit] Report line number for failed RUN command

Kostya Serebryany via llvm-commits llvm-commits at lists.llvm.org
Wed May 30 19:20:01 PDT 2018


Hi,

This change broke one of the libFuzzer tests:
ninja check-fuzzer (or just ninja fuzzer && llvm-lit -sv
~/llvm/projects/compiler-rt/test/fuzzer/sigusr.test)
hangs now.

Reverting this change fixes the test.

Please take a look and either fix, revert, or suggest a fix in
projects/compiler-rt/test/fuzzer/sigusr.test

--kcc





On Wed, May 30, 2018 at 5:59 PM Joel E. Denny via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: jdenny
> Date: Wed May 30 17:55:32 2018
> New Revision: 333614
>
> URL: http://llvm.org/viewvc/llvm-project?rev=333614&view=rev
> Log:
> [lit] Report line number for failed RUN command
>
> (Relands r333584, reverted in 333592.)
>
> When debugging test failures with -vv (or -v in the case of the
> internal shell), this makes it easier to locate the RUN line that
> failed.  For example, clang's test/Driver/linux-ld.c has 892 total RUN
> lines, and clang's test/Driver/arm-cortex-cpus.c has 424 RUN lines
> after concatenation for line continuations.
>
> When reading the generated shell script, this also makes it easier to
> locate the RUN line that produced each command.
>
> To support reporting RUN line numbers in the case of the internal
> shell, this patch extends the internal shell to support the null
> command, ":", except pipelines are not supported.
>
> To support reporting RUN line numbers in the case of windows cmd.exe
> as the external shell, this patch extends -vv to set "echo on" instead
> of "echo off" in bat files.  (Support for windows cmd.exe as a lit
> external shell will likely be dropped later, but I found out too
> late.)
>
> Reviewed By: delcypher, asmith, stella.stamenova, jmorse, lebedev.ri, rnk
>
> Differential Revision: https://reviews.llvm.org/D44598
>
> Added:
>
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/basic.txt
>
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/line-continuation.txt
>
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/lit.local.cfg
>
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/basic.txt
>
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/line-continuation.txt
>
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/lit.local.cfg
>     llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/lit.cfg
>     llvm/trunk/utils/lit/tests/Inputs/shtest-shell/colon-error.txt
>     llvm/trunk/utils/lit/tests/shtest-run-at-line.py
> Modified:
>     llvm/trunk/docs/CommandGuide/lit.rst
>     llvm/trunk/utils/lit/lit/TestRunner.py
>     llvm/trunk/utils/lit/tests/lit.cfg
>     llvm/trunk/utils/lit/tests/max-failures.py
>     llvm/trunk/utils/lit/tests/shtest-format.py
>     llvm/trunk/utils/lit/tests/shtest-output-printing.py
>     llvm/trunk/utils/lit/tests/shtest-shell.py
>     llvm/trunk/utils/lit/tests/unit/TestRunner.py
>
> Modified: llvm/trunk/docs/CommandGuide/lit.rst
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/CommandGuide/lit.rst?rev=333614&r1=333613&r2=333614&view=diff
>
> ==============================================================================
> --- llvm/trunk/docs/CommandGuide/lit.rst (original)
> +++ llvm/trunk/docs/CommandGuide/lit.rst Wed May 30 17:55:32 2018
> @@ -85,6 +85,10 @@ 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.
> + :program:`lit` normally inserts a no-op command (``:`` in the case of
> bash)
> + with argument ``'RUN: at line N'`` before each command pipeline, and this
> + option also causes those no-op commands to be echoed to stdout to help
> you
> + locate the source line of the failed command.
>   This option implies ``--verbose``.
>
>  .. option:: -a, --show-all
>
> Modified: llvm/trunk/utils/lit/lit/TestRunner.py
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/TestRunner.py?rev=333614&r1=333613&r2=333614&view=diff
>
> ==============================================================================
> --- llvm/trunk/utils/lit/lit/TestRunner.py (original)
> +++ llvm/trunk/utils/lit/lit/TestRunner.py Wed May 30 17:55:32 2018
> @@ -40,6 +40,17 @@ 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.
> @@ -789,6 +800,13 @@ def _executeShCmd(cmd, shenv, results, t
>          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 = []
> @@ -982,7 +1000,8 @@ def _executeShCmd(cmd, shenv, results, t
>
>  def executeScriptInternal(test, litConfig, tmpBase, commands, cwd):
>      cmds = []
> -    for ln in commands:
> +    for i, ln in enumerate(commands):
> +        ln = commands[i] = re.sub(kPdbgRegex, ": '\\1'", ln)
>          try:
>              cmds.append(ShUtil.ShParser(ln, litConfig.isWindows,
>                                          test.config.pipefail).parse())
> @@ -1066,9 +1085,16 @@ def executeScript(test, litConfig, tmpBa
>        mode += 'b'  # Avoid CRLFs when writing bash scripts.
>      f = open(script, mode)
>      if isWin32CMDEXE:
> -        f.write('@echo off\n')
> -        f.write('\nif %ERRORLEVEL% NEQ 0 EXIT\n'.join(commands))
> +        for i, ln in enumerate(commands):
> +            commands[i] = re.sub(kPdbgRegex, "echo '\\1' > nul", ln)
> +        if litConfig.echo_all_commands:
> +            f.write('@echo on\n')
> +        else:
> +            f.write('@echo off\n')
> +        f.write('\n at if %ERRORLEVEL% NEQ 0 EXIT\n'.join(commands))
>      else:
> +        for i, ln in enumerate(commands):
> +            commands[i] = re.sub(kPdbgRegex, ": '\\1'", ln)
>          if test.config.pipefail:
>              f.write('set -o pipefail;')
>          if litConfig.echo_all_commands:
> @@ -1301,7 +1327,9 @@ class IntegratedTestKeywordParser(object
>          self.parser = parser
>
>          if kind == ParserKind.COMMAND:
> -            self.parser = self._handleCommand
> +            self.parser = lambda line_number, line, output: \
> +                                 self._handleCommand(line_number, line,
> output,
> +                                                     self.keyword)
>          elif kind == ParserKind.LIST:
>              self.parser = self._handleList
>          elif kind == ParserKind.BOOLEAN_EXPR:
> @@ -1332,7 +1360,7 @@ class IntegratedTestKeywordParser(object
>          return (not line.strip() or output)
>
>      @staticmethod
> -    def _handleCommand(line_number, line, output):
> +    def _handleCommand(line_number, line, output, keyword):
>          """A helper for parsing COMMAND type keywords"""
>          # Trim trailing whitespace.
>          line = line.rstrip()
> @@ -1351,6 +1379,14 @@ 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
>
>
> Added:
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/basic.txt
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/basic.txt?rev=333614&view=auto
>
> ==============================================================================
> ---
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/basic.txt
> (added)
> +++
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/basic.txt
> Wed May 30 17:55:32 2018
> @@ -0,0 +1,6 @@
> +# These commands must run under both bash and windows cmd.exe (with
> GnuWin32
> +# tools).
> +
> +# RUN: true
> +# RUN: false
> +# RUN: true
>
> Added:
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/line-continuation.txt
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/line-continuation.txt?rev=333614&view=auto
>
> ==============================================================================
> ---
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/line-continuation.txt
> (added)
> +++
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/line-continuation.txt
> Wed May 30 17:55:32 2018
> @@ -0,0 +1,12 @@
> +# 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
>
> Added:
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/lit.local.cfg
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/lit.local.cfg?rev=333614&view=auto
>
> ==============================================================================
> ---
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/lit.local.cfg
> (added)
> +++
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/lit.local.cfg
> Wed May 30 17:55:32 2018
> @@ -0,0 +1,2 @@
> +import lit.formats
> +config.test_format = lit.formats.ShTest(execute_external=True)
>
> Added:
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/basic.txt
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/basic.txt?rev=333614&view=auto
>
> ==============================================================================
> ---
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/basic.txt
> (added)
> +++
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/basic.txt
> Wed May 30 17:55:32 2018
> @@ -0,0 +1,3 @@
> +# RUN: true
> +# RUN: false
> +# RUN: true
>
> Added:
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/line-continuation.txt
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/line-continuation.txt?rev=333614&view=auto
>
> ==============================================================================
> ---
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/line-continuation.txt
> (added)
> +++
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/line-continuation.txt
> Wed May 30 17:55:32 2018
> @@ -0,0 +1,11 @@
> +# 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
>
> Added:
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/lit.local.cfg
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/lit.local.cfg?rev=333614&view=auto
>
> ==============================================================================
> ---
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/lit.local.cfg
> (added)
> +++
> llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/lit.local.cfg
> Wed May 30 17:55:32 2018
> @@ -0,0 +1,2 @@
> +import lit.formats
> +config.test_format = lit.formats.ShTest(execute_external=False)
>
> Added: llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/lit.cfg
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/lit.cfg?rev=333614&view=auto
>
> ==============================================================================
> --- llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/lit.cfg (added)
> +++ llvm/trunk/utils/lit/tests/Inputs/shtest-run-at-line/lit.cfg Wed May
> 30 17:55:32 2018
> @@ -0,0 +1,2 @@
> +config.name = 'shtest-run-at-line'
> +config.suffixes = ['.txt']
>
> Added: llvm/trunk/utils/lit/tests/Inputs/shtest-shell/colon-error.txt
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-shell/colon-error.txt?rev=333614&view=auto
>
> ==============================================================================
> --- llvm/trunk/utils/lit/tests/Inputs/shtest-shell/colon-error.txt (added)
> +++ llvm/trunk/utils/lit/tests/Inputs/shtest-shell/colon-error.txt Wed May
> 30 17:55:32 2018
> @@ -0,0 +1,3 @@
> +# Check error on an unsupported ":". (cannot be part of a pipeline)
> +#
> +# RUN: : | echo "hello"
>
> Modified: llvm/trunk/utils/lit/tests/lit.cfg
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/lit.cfg?rev=333614&r1=333613&r2=333614&view=diff
>
> ==============================================================================
> --- llvm/trunk/utils/lit/tests/lit.cfg (original)
> +++ llvm/trunk/utils/lit/tests/lit.cfg Wed May 30 17:55:32 2018
> @@ -71,3 +71,14 @@ for attribute in ('llvm_tools_dir', 'lit
>      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}', "'"))
>
> Modified: llvm/trunk/utils/lit/tests/max-failures.py
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/max-failures.py?rev=333614&r1=333613&r2=333614&view=diff
>
> ==============================================================================
> --- llvm/trunk/utils/lit/tests/max-failures.py (original)
> +++ llvm/trunk/utils/lit/tests/max-failures.py Wed May 30 17:55:32 2018
> @@ -8,7 +8,7 @@
>  #
>  # END.
>
> -# CHECK: Failing Tests (26)
> +# CHECK: Failing Tests (27)
>  # CHECK: Failing Tests (1)
>  # CHECK: Failing Tests (2)
>  # CHECK: error: Setting --max-failures to 0 does not have any effect.
>
> Modified: llvm/trunk/utils/lit/tests/shtest-format.py
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/shtest-format.py?rev=333614&r1=333613&r2=333614&view=diff
>
> ==============================================================================
> --- llvm/trunk/utils/lit/tests/shtest-format.py (original)
> +++ llvm/trunk/utils/lit/tests/shtest-format.py Wed May 30 17:55:32 2018
> @@ -39,6 +39,7 @@
>  #
>  # 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
>
> Modified: llvm/trunk/utils/lit/tests/shtest-output-printing.py
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/shtest-output-printing.py?rev=333614&r1=333613&r2=333614&view=diff
>
> ==============================================================================
> --- llvm/trunk/utils/lit/tests/shtest-output-printing.py (original)
> +++ llvm/trunk/utils/lit/tests/shtest-output-printing.py Wed May 30
> 17:55:32 2018
> @@ -16,12 +16,15 @@
>  #
>  # 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:      $ "wc" "missing-file"
> +# CHECK:      $ ":" "RUN: at line 3"
> +# CHECK-NEXT: $ "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
>
> Added: llvm/trunk/utils/lit/tests/shtest-run-at-line.py
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/shtest-run-at-line.py?rev=333614&view=auto
>
> ==============================================================================
> --- llvm/trunk/utils/lit/tests/shtest-run-at-line.py (added)
> +++ llvm/trunk/utils/lit/tests/shtest-run-at-line.py Wed May 30 17:55:32
> 2018
> @@ -0,0 +1,70 @@
> +# 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
>
> Modified: llvm/trunk/utils/lit/tests/shtest-shell.py
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/shtest-shell.py?rev=333614&r1=333613&r2=333614&view=diff
>
> ==============================================================================
> --- llvm/trunk/utils/lit/tests/shtest-shell.py (original)
> +++ llvm/trunk/utils/lit/tests/shtest-shell.py Wed May 30 17:55:32 2018
> @@ -26,6 +26,14 @@
>  # 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"
> @@ -153,7 +161,7 @@
>  #
>  # CHECK: FAIL: shtest-shell :: error-1.txt
>  # CHECK: *** TEST 'shtest-shell :: error-1.txt' FAILED ***
> -# CHECK: shell parser error on: 'echo "missing quote'
> +# CHECK: shell parser error on: ': \'RUN: at line 3\' && echo "missing
> quote'
>  # CHECK: ***
>
>  # CHECK: FAIL: shtest-shell :: error-2.txt
> @@ -219,4 +227,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 (26)
> +# CHECK: Failing Tests (27)
>
> Modified: llvm/trunk/utils/lit/tests/unit/TestRunner.py
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/unit/TestRunner.py?rev=333614&r1=333613&r2=333614&view=diff
>
> ==============================================================================
> --- llvm/trunk/utils/lit/tests/unit/TestRunner.py (original)
> +++ llvm/trunk/utils/lit/tests/unit/TestRunner.py Wed May 30 17:55:32 2018
> @@ -99,8 +99,8 @@ class TestIntegratedTestKeywordParser(un
>          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(), 'baz')
> -        self.assertEqual(value[1].strip(), '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()
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180530/fa70b6aa/attachment.html>


More information about the llvm-commits mailing list