48 lines
1023 B
YAML
48 lines
1023 B
YAML
name: "Builtins: eval"
|
|||
|
|
cases:
|
||
|
|
- name: "Basic eval usage"
|
||
|
|
stdin: |
|
||
|
|
eval 'echo 1 + 1 == $((1 + 1))'
|
||
|
|
|
||
|
|
- name: "eval with return in function"
|
||
|
|
stdin: |
|
||
|
|
f() {
|
||
|
|
eval 'return 42'
|
||
|
|
echo "Should not reach here"
|
||
|
|
}
|
||
|
|
f
|
||
|
|
echo "Exit code: $?"
|
||
|
|
|
||
|
|
- name: "eval with exit"
|
||
|
|
stdin: |
|
||
|
|
eval 'exit 42'
|
||
|
|
echo "After eval'd exit"
|
||
|
|
|
||
|
|
- name: "eval with break in loop"
|
||
|
|
stdin: |
|
||
|
|
for i in 1 2 3; do
|
||
|
|
eval 'break'
|
||
|
|
echo "After eval'd break"
|
||
|
|
done
|
||
|
|
echo "After loop"
|
||
|
|
|
||
|
|
- name: "eval with continue in loop"
|
||
|
|
stdin: |
|
||
|
|
for i in 1 2 3; do
|
||
|
|
echo "Iteration $i"
|
||
|
|
eval 'continue'
|
||
|
|
echo "After eval'd continue"
|
||
|
|
done
|
||
|
|
echo "After loop"
|
||
|
|
|
||
|
|
- name: "eval with nested break levels"
|
||
|
|
stdin: |
|
||
|
|
for i in 1 2; do
|
||
|
|
for j in a b c; do
|
||
|
|
eval 'break 2'
|
||
|
|
echo "After eval'd break (inner loop)"
|
||
|
|
done
|
||
|
|
echo "After eval'd break (outer loop)"
|
||
|
|
done
|
||
|
|
echo "After outer loop"
|