109 lines
3.4 KiB
Text
109 lines
3.4 KiB
Text
|
# CHECK: -- Testing:{{.*}}
|
||
|
# CHECK-NEXT: PASS: shtest-if-else :: test.txt (1 of 1)
|
||
|
# CHECK: Command Output (stdout):
|
||
|
# CHECK-NEXT: --
|
||
|
|
||
|
# RUN: %if feature %{ echo "test-1" %}
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-1]]
|
||
|
# CHECK-NEXT: echo "test-1"
|
||
|
|
||
|
# If %else is not present it is treated like %else %{%}. Empty commands
|
||
|
# are ignored.
|
||
|
#
|
||
|
# RUN: %if nofeature %{ echo "fail" %}
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-1]] has no command after substitutions
|
||
|
# CHECK-NOT: fail
|
||
|
|
||
|
# RUN: %if nofeature %{ echo "fail" %} %else %{ echo "test-2" %}
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-1]]
|
||
|
# CHECK-NEXT: echo "test-2"
|
||
|
|
||
|
# Spaces inside curly braces are not ignored
|
||
|
#
|
||
|
# RUN: echo test-%if feature %{ 3 %} %else %{ fail %}-test
|
||
|
# RUN: echo test-%if feature %{ 4 4 %} %else %{ fail %}-test
|
||
|
# RUN: echo test-%if nofeature %{ fail %} %else %{ 5 5 %}-test
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-3]]
|
||
|
# CHECK-NEXT: echo test- 3 -test
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-4]]
|
||
|
# CHECK-NEXT: echo test- 4 4 -test
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-5]]
|
||
|
# CHECK-NEXT: echo test- 5 5 -test
|
||
|
|
||
|
# Escape line breaks for multi-line expressions
|
||
|
#
|
||
|
# RUN: %if feature \
|
||
|
# RUN: %{ echo \
|
||
|
# RUN: "test-5" \
|
||
|
# RUN: %}
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-4]]
|
||
|
# CHECK-NEXT: echo "test-5"
|
||
|
|
||
|
# RUN: %if nofeature \
|
||
|
# RUN: %{ echo "fail" %} \
|
||
|
# RUN: %else \
|
||
|
# RUN: %{ echo "test-6" %}
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-4]]
|
||
|
# CHECK-NEXT: echo "test-6"
|
||
|
|
||
|
# RUN: echo "test%if feature %{%} %else %{%}-7"
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-1]]
|
||
|
# CHECK-NEXT: echo "test-7"
|
||
|
|
||
|
# Escape %if. Without %if..%else context '%{' and '%}' are treated
|
||
|
# literally.
|
||
|
#
|
||
|
# RUN: echo %%if feature %{ echo "test-8" %}
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-1]]
|
||
|
# CHECK-NEXT: echo %if feature %{ echo "test-8" %}
|
||
|
|
||
|
# Nested expressions are supported:
|
||
|
#
|
||
|
# RUN: echo %if feature %{ %if feature %{ %if nofeature %{"fail"%} %else %{"test-9"%} %} %}
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-1]]
|
||
|
# CHECK-NEXT: echo "test-9"
|
||
|
|
||
|
# Binary expression evaluation and regex match can be used as
|
||
|
# conditions.
|
||
|
#
|
||
|
# RUN: echo %if feature && !nofeature %{ "test-10" %}
|
||
|
# RUN: echo %if feature && nofeature %{ "fail" %} %else %{ "test-11" %}
|
||
|
# RUN: echo %if {{fea.+}} %{ "test-12" %} %else %{ "fail" %}
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-3]]
|
||
|
# CHECK-NEXT: echo "test-10"
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-4]]
|
||
|
# CHECK-NEXT: echo "test-11"
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-5]]
|
||
|
# CHECK-NEXT: echo "test-12"
|
||
|
|
||
|
# Spaces between %if and %else are ignored. If there is no %else -
|
||
|
# space after %if %{...%} is not ignored.
|
||
|
#
|
||
|
# RUN: echo XX %if feature %{YY%} ZZ
|
||
|
# RUN: echo AA %if feature %{BB%} %else %{CC%} DD
|
||
|
# RUN: echo AA %if nofeature %{BB%} %else %{CC%} DD
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-3]]
|
||
|
# CHECK-NEXT: echo XX YY ZZ
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-4]]
|
||
|
# CHECK-NEXT: echo AA BB DD
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-5]]
|
||
|
# CHECK-NEXT: echo AA CC DD
|
||
|
|
||
|
# '{' and '}' can be used without escaping
|
||
|
#
|
||
|
# RUN: %if feature %{echo {}%}
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-1]]
|
||
|
# CHECK-NEXT: echo {}
|
||
|
|
||
|
# Spaces are not required
|
||
|
#
|
||
|
# RUN: echo %if feature%{"ok"%}%else%{"fail"%}
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-1]]
|
||
|
# CHECK-NEXT: echo "ok"
|
||
|
|
||
|
# Substitutions with braces are handled correctly
|
||
|
#
|
||
|
# RUN: echo %{sub} %if feature%{test-%{sub}%}%else%{"fail"%}
|
||
|
# CHECK: # {{RUN}}: at line [[#@LINE-1]]
|
||
|
# CHECK-NEXT: echo ok test-ok
|