diff --git a/llvm/utils/lit/lit/TestRunner.py b/llvm/utils/lit/lit/TestRunner.py index 528694b07f033..a6314e35c1a04 100644 --- a/llvm/utils/lit/lit/TestRunner.py +++ b/llvm/utils/lit/lit/TestRunner.py @@ -55,7 +55,7 @@ def __init__(self, command, message): # # COMMAND that follows %dbg(ARG) is also captured. COMMAND can be # empty as a result of conditinal substitution. -kPdbgRegex = "%dbg\\(([^)'\"]*)\\)(.*)" +kPdbgRegex = "%dbg\\(([^)'\"]*)\\)((?:.|\\n)*)" def buildPdbgCommand(msg, cmd): diff --git a/llvm/utils/lit/tests/Inputs/shtest-inject/lit.cfg b/llvm/utils/lit/tests/Inputs/shtest-inject/lit.cfg index b3a86e73d21ac..6454e22ce2145 100644 --- a/llvm/utils/lit/tests/Inputs/shtest-inject/lit.cfg +++ b/llvm/utils/lit/tests/Inputs/shtest-inject/lit.cfg @@ -1,6 +1,7 @@ import lit -preamble_commands = ['echo "THIS WAS"', 'echo "INJECTED"'] +# Check multiple commands, and check newlines. +preamble_commands = ['echo "THIS WAS"', 'echo\n"INJECTED"'] config.name = "shtest-inject" config.suffixes = [".txt"] 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 index 4cc234df4fcaa..913495fbb3fe3 100644 --- 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 @@ -1,3 +1,8 @@ import lit.formats config.test_format = lit.formats.ShTest(execute_external=True) +config.substitutions.append(("%{cmds-with-newlines}", """ +echo abc | +FileCheck %s && +false +""")) diff --git a/llvm/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/run-line-with-newline.txt b/llvm/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/run-line-with-newline.txt new file mode 100644 index 0000000000000..a9cf51be9cb9a --- /dev/null +++ b/llvm/utils/lit/tests/Inputs/shtest-run-at-line/external-shell/run-line-with-newline.txt @@ -0,0 +1,2 @@ +# RUN: %{cmds-with-newlines} +# CHECK: abc 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 index 3002a11ed23c5..6b8e6244c1ae2 100644 --- 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 @@ -1,3 +1,8 @@ import lit.formats config.test_format = lit.formats.ShTest(execute_external=False) +config.substitutions.append(("%{cmds-with-newlines}", """ +echo abc | +FileCheck %s && +false +""")) diff --git a/llvm/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/run-line-with-newline.txt b/llvm/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/run-line-with-newline.txt new file mode 100644 index 0000000000000..a9cf51be9cb9a --- /dev/null +++ b/llvm/utils/lit/tests/Inputs/shtest-run-at-line/internal-shell/run-line-with-newline.txt @@ -0,0 +1,2 @@ +# RUN: %{cmds-with-newlines} +# CHECK: abc diff --git a/llvm/utils/lit/tests/shtest-inject.py b/llvm/utils/lit/tests/shtest-inject.py index 3d34eb7161d46..5ba9d2f81268f 100644 --- a/llvm/utils/lit/tests/shtest-inject.py +++ b/llvm/utils/lit/tests/shtest-inject.py @@ -14,7 +14,8 @@ # CHECK-TEST1-NEXT: # | THIS WAS # CHECK-TEST1-NEXT: # `---{{-*}} # CHECK-TEST1-NEXT: # preamble command line -# CHECK-TEST1-NEXT: echo "INJECTED" +# CHECK-TEST1-NEXT: echo +# CHECK-TEST1-NEXT: "INJECTED" # CHECK-TEST1-NEXT: # executed command: echo INJECTED # CHECK-TEST1-NEXT: # .---command stdout{{-*}} # CHECK-TEST1-NEXT: # | INJECTED diff --git a/llvm/utils/lit/tests/shtest-run-at-line.py b/llvm/utils/lit/tests/shtest-run-at-line.py index 18086f6fa10d6..dc0b78c6b81ca 100644 --- a/llvm/utils/lit/tests/shtest-run-at-line.py +++ b/llvm/utils/lit/tests/shtest-run-at-line.py @@ -7,7 +7,7 @@ # END. -# CHECK: Testing: 6 tests +# CHECK: Testing: 8 tests # In the case of the external shell, we check for only RUN lines in stderr in @@ -48,6 +48,15 @@ # CHECK-NOT: RUN # CHECK: -- +# CHECK-LABEL: FAIL: shtest-run-at-line :: external-shell/run-line-with-newline.txt + +# CHECK: Command Output (stderr) +# CHECK-NEXT: -- +# CHECK-NEXT: {{^}}RUN: at line 1: echo abc | +# CHECK-NEXT: FileCheck {{.*}} && +# CHECK-NEXT: false +# CHECK-NOT: RUN + # CHECK-LABEL: FAIL: shtest-run-at-line :: internal-shell/basic.txt @@ -87,3 +96,16 @@ # CHECK-NEXT: # executed command: echo 'foo baz' # CHECK-NEXT: # executed command: FileCheck {{.*}} # CHECK-NOT: RUN + +# CHECK-LABEL: FAIL: shtest-run-at-line :: internal-shell/run-line-with-newline.txt + +# CHECK: Command Output (stdout) +# CHECK-NEXT: -- +# CHECK-NEXT: # RUN: at line 1 +# CHECK-NEXT: echo abc | +# CHECK-NEXT: FileCheck {{.*}} && +# CHECK-NEXT: false +# CHECK-NEXT: # executed command: echo abc +# CHECK-NEXT: # executed command: FileCheck {{.*}} +# CHECK-NEXT: # executed command: false +# CHECK-NOT: RUN