llvm-capstone/llvm/utils/lit/tests/shtest-inject.py
Joel E. Denny 3dc7039f24
[lit] Fix shell commands with newlines (#67898)
In PR #65242 (landed as 9e739fdb85ac672f3e25e971d96e71823e07ebda), I
claimed that RUN lines cannot contain newlines. Actually, they can after
substitution expansion. More generally, a lit config file can define
substitutions or preamble commands containing newlines. While both of
those cases seem unlikely in practice,
[D154987](https://reviews.llvm.org/D154987) proposes PYTHON directives
where it seems very likely.

Regardless of the use case, without this patch, such newlines break
expansion of `%dbg(RUN: at line N)`, and the fix is simple.
2023-10-03 10:00:21 -04:00

45 lines
1.4 KiB
Python

# Check that we can inject preamble commands at the beginning of a ShTest.
#
# For one case, check the execution trace as these preamble commands have
# "preamble command" instead of the usual "{{RUN}}: at line N".
# RUN: %{lit} %{inputs}/shtest-inject/test-empty.txt --show-all | FileCheck --check-prefix=CHECK-TEST1 %s
#
# CHECK-TEST1: Command Output (stdout):
# CHECK-TEST1-NEXT: --
# CHECK-TEST1-NEXT: # preamble command line
# CHECK-TEST1-NEXT: echo "THIS WAS"
# CHECK-TEST1-NEXT: # executed command: echo 'THIS WAS'
# CHECK-TEST1-NEXT: # .---command stdout{{-*}}
# CHECK-TEST1-NEXT: # | THIS WAS
# CHECK-TEST1-NEXT: # `---{{-*}}
# CHECK-TEST1-NEXT: # preamble command line
# CHECK-TEST1-NEXT: echo
# CHECK-TEST1-NEXT: "INJECTED"
# CHECK-TEST1-NEXT: # executed command: echo INJECTED
# CHECK-TEST1-NEXT: # .---command stdout{{-*}}
# CHECK-TEST1-NEXT: # | INJECTED
# CHECK-TEST1-NEXT: # `---{{-*}}
# CHECK-TEST1-EMPTY:
# CHECK-TEST1-NEXT: --
#
# CHECK-TEST1: Passed: 1
# RUN: %{lit} %{inputs}/shtest-inject/test-one.txt --show-all | FileCheck --check-prefix=CHECK-TEST2 %s
#
# CHECK-TEST2: THIS WAS
# CHECK-TEST2: INJECTED
# CHECK-TEST2: IN THE FILE
#
# CHECK-TEST2: Passed: 1
# RUN: %{lit} %{inputs}/shtest-inject/test-many.txt --show-all | FileCheck --check-prefix=CHECK-TEST3 %s
#
# CHECK-TEST3: THIS WAS
# CHECK-TEST3: INJECTED
# CHECK-TEST3: IN THE FILE
# CHECK-TEST3: IF IT WORKS
# CHECK-TEST3: AS EXPECTED
#
# CHECK-TEST3: Passed: 1