fish-shell/tests/test7.in

124 lines
2.2 KiB
Text

# Test that subsequent cases do not blow away the status from previous ones
for val in one two three four
switch $val
case one
/bin/sh -c 'exit 1'
case two
/bin/sh -c 'exit 2'
case three
/bin/sh -c 'exit 3'
end
echo $status
end
echo
# Test that the `switch` builtin itself does not blow away status before evaluating a case
false
switch one
case one
echo $status
end
# Test that non-case tokens inside `switch` don't blow away status
# (why are these even allowed?)
false
switch one
true
case one
echo $status
end
#test contains -i
echo test contains -i
contains -i string a b c string d
contains -i string a b c d; or echo nothing
contains -i -- string a b c string d
contains -i -- -- a b c; or echo nothing
contains -i -- -- a b c -- v
# Test if, else, and else if
if true
echo alpha1.1
echo alpha1.2
else if false
echo beta1.1
echo beta1.2
else if false
echo gamma1.1
echo gamma1.2
else
echo delta1.1
echo delta1.2
end
if false
echo alpha2.1
echo alpha2.2
else if begin ; true ; end
echo beta2.1
echo beta2.2
else if begin ; echo nope2.1; false ; end
echo gamma2.1
echo gamma2.2
else
echo delta2.1
echo delta2.2
end
if false
echo alpha3.1
echo alpha3.2
else if begin ; echo yep3.1; false ; end
echo beta3.1
echo beta3.2
else if begin ; echo yep3.2; true ; end
echo gamma3.1
echo gamma3.2
else
echo delta3.1
echo delta3.2
end
if false
echo alpha4.1
echo alpha4.2
else if begin ; echo yep4.1; false ; end
echo beta4.1
echo beta4.2
else if begin ; echo yep4.2; false ; end
echo gamma4.1
echo gamma4.2
else
echo delta4.1
echo delta4.2
end
if test ! -n "abc"
else if test -n "def"
echo "epsilon5.2"
else if not_a_valid_command but it should be OK because a previous branch was taken
echo "epsilon 5.3"
else if test ! -n "abc"
echo "epsilon 5.4"
end
# Ensure builtins work
# https://github.com/fish-shell/fish-shell/issues/359
if not echo skip1 > /dev/null
echo "zeta 6.1"
else if echo skip2 > /dev/null
echo "zeta 6.2"
end
echo '###'
# Ensure 'type' works
# https://github.com/fish-shell/fish-shell/issues/513
function fish_test_type_zzz
true
end
# Should succeed
type fish_test_type_zzz >/dev/null ; echo $status
# Should fail
type -f fish_test_type_zzz >/dev/null ; echo $status