fish-shell/tests/test4.in
Kurtis Rader 54a76bb9e5 emit error message when test is given invalid int
This augments the previous change for issue #3346 by adding an error
message when an invalid integer is seen. This change is likely to be
controversial so I'm not going to squash it into the previous change.
2016-11-27 20:37:30 -08:00

190 lines
3.1 KiB
Fish

#Test scoping rules for functions
set -e smurf
function setter
set smurf green
end
function unsetter
set -e smurf
end
function call1
set smurf blue; setter; if test $smurf = blue; echo Test 1 pass; else; echo Test 1 fail; end
end
function call2
set smurf blue; unsetter; if test $smurf = blue; echo Test 2 pass; else; echo Test 2 fail; end
end
call1
call2
function call3
setter; if test $smurf = green; echo Test 3 pass; else; echo Test 3 fail; end
end
function call4
unsetter; if not set -q smurf; echo Test 4 pass; else; echo Test 4 fail; end
end
set -g smurf yellow
call3
call4
set -l foo 1
set -g bar 2
set -U baz 3
set -l -q foo
if test $status -ne 0
echo Test 5 fail
else
echo Test 5 pass
end;
if not set -g -q bar
echo Test 6 fail
else
echo Test 6 pass
end;
if not set -U -q baz
echo Test 7 fail
else
echo Test 7 pass
end;
set -u -l -q foo
if test $status -ne 0
echo Test 8 fail
else
echo Test 8 pass
end;
if not set -u -g -q bar
echo Test 9 fail
else
echo Test 9 pass
end;
if not set -u -U -q baz
echo Test 10 fail
else
echo Test 10 pass
end;
set -x -l -q foo
if test $status -eq 0
echo Test 11 fail
else
echo Test 11 pass
end;
if set -x -g -q bar
echo Test 12 fail
else
echo Test 12 pass
end;
if set -x -U -q baz
echo Test 13 fail
else
echo Test 13 pass
end;
set -x -l foo 1
set -x -g bar 2
set -x -U baz 3
set -l -q foo
if test $status -ne 0
echo Test 14 fail
else
echo Test 14 pass
end;
if not set -g -q bar
echo Test 15 fail
else
echo Test 15 pass
end;
if not set -U -q baz
echo Test 16 fail
else
echo Test 16 pass
end;
set -u -l -q foo
if test $status -ne 1
echo Test 17 fail
else
echo Test 17 pass
end;
if set -u -g -q bar
echo Test 18 fail
else
echo Test 18 pass
end;
if set -u -U -q baz
echo Test 19 fail
else
echo Test 19 pass
end;
set -x -l -q foo
if test $status -ne 0
echo Test 20 fail
else
echo Test 20 pass
end;
if not set -x -g -q bar
echo Test 21 fail
else
echo Test 21 pass
end;
if not set -x -U -q baz
echo Test 22 fail
else
echo Test 22 pass
end;
set -U -e baz
echo "Verify subcommand statuses"
echo (false) $status (true) $status (false) $status
echo "Verify that set passes through exit status, except when passed -n or -q or -e"
false ; set foo bar ; echo 1 $status # passthrough
true ; set foo bar ; echo 2 $status # passthrough
false ; set -q foo ; echo 3 $status # no passthrough
true ; set -q foo ; echo 4 $status # no passthrough
false ; set -n > /dev/null ; echo 5 $status # no passthrough
false ; set -e foo ; echo 6 $status # no passthrough
true ; set -e foo ; echo 7 $status # no passthrough
false ; set -h > /dev/null ; echo 8 $status # no passthrough
true ; set -NOT_AN_OPTION 2> /dev/null ; echo 9 $status # no passthrough
false ; set foo (echo A; true) ; echo 10 $status $foo
true ; set foo (echo B; false) ; echo 11 $status $foo
true
echo "Verify set -ql behavior" # see 2502
function setql_check
set -l setql_foo val
if set -ql setql_foo
echo Pass
else
echo Fail
end
end
setql_check