Files
fish-shell/tests/checks/return.fish
Nahor 99d63c21f1 Add tests to exercise all builtin error messages
With a few exceptions, only one test is added for a given message, even
when there are multiple ways to trigger the same message (e.g. different
invalid option combinations, or triggered in shared functions such as
`builtin_unknown_option`)

Includes a few very minor fixes, such as missing a newline, or using the
wrong var name.

Closes #12603
2026-04-05 00:22:42 +08:00

52 lines
1.0 KiB
Fish

#RUN: fish=%fish %fish %s
# Some tests of the "return" builtin.
$fish -c 'return 5'
echo $status
# CHECK: 5
$fish -c 'exit 5'
echo $status
# CHECK: 5
$fish -c 'echo foo; return 2; echo bar'
# CHECK: foo
# but not bar
echo $status
# CHECK: 2
begin
$fish -ic 'echo interactive-foo; return 69; echo interactive-bar'
# CHECK: interactive-foo
# but not bar
echo $status
# CHECK: 69
end
# Verify negative return values don't cause UB and never map to 0
function empty_return
return $argv[1]
end
for i in (seq -- -550 -1)
empty_return $i
if test $status -eq 0
echo returning $i from a fish script maps to a $status of 0!
end
end
# CHECK:
$fish -c "return 1 2"
# CHECKERR: return: too many arguments
# CHECKERR: Standard input (line 1):
# CHECKERR: return 1 2
# CHECKERR: ^
# CHECKERR: (Type 'help return' for related documentation)
$fish -c "return abc"
# CHECKERR: return: abc: invalid integer
# CHECKERR: Standard input (line 1):
# CHECKERR: return abc
# CHECKERR: ^
# CHECKERR: (Type 'help return' for related documentation)