# CHECK: -- Testing:{{.*}} # CHECK-NEXT: PASS: shtest-if-else :: test.txt (1 of 1) # CHECK-NEXT: Script: # CHECK-NEXT: -- # RUN: %if feature %{ echo "test-1" %} # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-1]]'; echo "test-1" # If %else is not present it is treated like %else %{%}. Empty commands # are ignored. # # RUN: %if nofeature %{ echo "fail" %} # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-1]]' # CHECK-NOT: fail # RUN: %if nofeature %{ echo "fail" %} %else %{ echo "test-2" %} # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-1]]'; 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-NEXT: {{^.*'RUN}}: at line [[#@LINE-3]]'; echo test- 3 -test # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-3]]'; echo test- 4 4 -test # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-3]]'; echo test- 5 5 -test # Escape line breaks for multi-line expressions # # RUN: %if feature \ # RUN: %{ echo \ # RUN: "test-5" \ # RUN: %} # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-4]]'; echo "test-5" # RUN: %if nofeature \ # RUN: %{ echo "fail" %} \ # RUN: %else \ # RUN: %{ echo "test-6" %} # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-4]]'; echo "test-6" # RUN: echo "test%if feature %{%} %else %{%}-7" # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-1]]'; echo "test-7" # Escape %if. Without %if..%else context '%{' and '%}' are treated # literally. # # RUN: echo %%if feature %{ echo "test-8" %} # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-1]]'; echo %if feature %{ echo "test-8" %} # Nested expressions are supported: # # RUN: echo %if feature %{ %if feature %{ %if nofeature %{"fail"%} %else %{"test-9"%} %} %} # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-1]]'; 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-NEXT: {{^.*'RUN}}: at line [[#@LINE-3]]'; echo "test-10" # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-3]]'; echo "test-11" # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-3]]'; 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-NEXT: {{^.*'RUN}}: at line [[#@LINE-3]]'; echo XX YY ZZ # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-3]]'; echo AA BB DD # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-3]]'; echo AA CC DD # '{' and '}' can be used without escaping # # RUN: %if feature %{echo {}%} # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-1]]'; echo {} # Spaces are not required # # RUN: echo %if feature%{"ok"%}%else%{"fail"%} # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-1]]'; echo "ok" # Substitutions with braces are handled correctly # # RUN: echo %{sub} %if feature%{test-%{sub}%}%else%{"fail"%} # CHECK-NEXT: {{^.*'RUN}}: at line [[#@LINE-1]]'; echo ok test-ok # CHECK-NEXT: -- # CHECK-NEXT: Exit Code: 0