100 lines
2.0 KiB
YAML
100 lines
2.0 KiB
YAML
name: "Compound commands: if"
|
|||
|
|
cases:
|
||
|
|
- name: "Basic if"
|
||
|
|
stdin: |
|
||
|
|
if false; then echo 1; else echo 2; fi
|
||
|
|
if false; then echo 3; elif false; then echo 4; else echo 5; fi
|
||
|
|
if true; then echo 6; else echo 7; fi
|
||
|
|
if false; then echo 8; elif true; then echo 10; else echo 11; fi
|
||
|
|
|
||
|
|
- name: "Multi-line if"
|
||
|
|
test_files:
|
||
|
|
- path: "script.sh"
|
||
|
|
contents: |
|
||
|
|
if false; then
|
||
|
|
echo 1
|
||
|
|
else
|
||
|
|
echo 2
|
||
|
|
fi
|
||
|
|
|
||
|
|
if false; then
|
||
|
|
echo 3
|
||
|
|
elif false; then
|
||
|
|
echo 4
|
||
|
|
else
|
||
|
|
echo 5
|
||
|
|
fi
|
||
|
|
|
||
|
|
if true; then
|
||
|
|
echo 6
|
||
|
|
else
|
||
|
|
echo 7
|
||
|
|
fi
|
||
|
|
|
||
|
|
if false; then
|
||
|
|
echo 8
|
||
|
|
elif true; then
|
||
|
|
echo 10
|
||
|
|
else
|
||
|
|
echo 11
|
||
|
|
fi
|
||
|
|
args: ["./script.sh"]
|
||
|
|
|
||
|
|
- name: "If with return in condition"
|
||
|
|
stdin: |
|
||
|
|
f() {
|
||
|
|
if return 42; then
|
||
|
|
echo "Then branch"
|
||
|
|
else
|
||
|
|
echo "Else branch"
|
||
|
|
fi
|
||
|
|
echo "After if"
|
||
|
|
}
|
||
|
|
f
|
||
|
|
echo "Exit code: $?"
|
||
|
|
|
||
|
|
- name: "If with exit in condition"
|
||
|
|
stdin: |
|
||
|
|
if exit 42; then
|
||
|
|
echo "Then branch"
|
||
|
|
else
|
||
|
|
echo "Else branch"
|
||
|
|
fi
|
||
|
|
echo "After if"
|
||
|
|
|
||
|
|
- name: "If with return in elif condition"
|
||
|
|
stdin: |
|
||
|
|
f() {
|
||
|
|
if false; then
|
||
|
|
echo "Then branch"
|
||
|
|
elif return 42; then
|
||
|
|
echo "Elif then branch"
|
||
|
|
else
|
||
|
|
echo "Else branch"
|
||
|
|
fi
|
||
|
|
echo "After if"
|
||
|
|
}
|
||
|
|
f
|
||
|
|
echo "Exit code: $?"
|
||
|
|
|
||
|
|
- name: "If with break in condition inside loop"
|
||
|
|
stdin: |
|
||
|
|
for i in 1 2 3; do
|
||
|
|
if break; then
|
||
|
|
echo "Then branch"
|
||
|
|
fi
|
||
|
|
echo "After if"
|
||
|
|
done
|
||
|
|
echo "After loop"
|
||
|
|
|
||
|
|
- name: "If with continue in condition inside loop"
|
||
|
|
stdin: |
|
||
|
|
for i in 1 2 3; do
|
||
|
|
echo "Iteration $i"
|
||
|
|
if continue; then
|
||
|
|
echo "Then branch"
|
||
|
|
fi
|
||
|
|
echo "After if"
|
||
|
|
done
|
||
|
|
echo "After loop"
|