1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 01:27:34 +00:00

Shell: Add a test for loops

This commit is contained in:
AnotherTest 2020-07-12 01:44:58 +04:30 committed by Andreas Kling
parent b6066faa1f
commit 2f731150a2

50
Shell/Tests/loop.sh Normal file
View file

@ -0,0 +1,50 @@
#!/bin/sh
singlecommand_ok=yes
multicommand_ok=yes
inlineexec_ok=yes
implicit_ok=yes
# Full form
# Empty
for x in () { }
# Empty block but nonempty list
for x in (1 2 3) { }
# Single command in block
for cmd in ((test 1 = 1) (test 2 = 2)) {
$cmd || unset singlecommand_ok
}
# Multiple commands in block
for cmd in ((test 1 = 1) (test 2 = 2)) {
test -z "$cmd"
test -z "$cmd" && unset multicommand_ok
}
# $(...) as iterable expression
test_file=sh-test-1
echo 1 > $test_file
echo 2 >> $test_file
echo 3 >> $test_file
echo 4 >> $test_file
lst=()
for line in $(cat $test_file) {
lst=($lst $line)
}
test "$lst" = "1 2 3 4" || unset inlineexec_ok
rm $test_file
# Implicit var
for ((test 1 = 1) (test 2 = 2)) {
$it || unset implicit_ok
}
test $singlecommand_ok || echo Fail: Single command inside for body
test $multicommand_ok || echo Fail: Multiple commands inside for body
test $inlineexec_ok || echo Fail: Inline Exec
test $implicit_ok || echo Fail: implicit iter variable
test "$singlecommand_ok $multicommand_ok $inlineexec_ok $implicit_ok" = "yes yes yes yes" || exit 1