mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-27 11:43:37 +08:00
ba8748877a
Turns out busybox diff (used on alpine) defaults to unified output, which we can't use because that prints filenames, and those are tempfiles made by psub. Instead, we use builtins to print the first line and compare the others.
62 lines
1.9 KiB
Fish
62 lines
1.9 KiB
Fish
# vim: set filetype=fish:
|
|
#
|
|
# Test the `function` builtin
|
|
|
|
logmsg Test the -V flag
|
|
set -g foo 'global foo'
|
|
set -l foo 'local foo'
|
|
set bar one 'two 2' \t '' 3
|
|
set baz
|
|
function frob -V foo -V bar -V baz
|
|
set --show foo bar baz
|
|
end
|
|
|
|
logmsg Testing -V
|
|
frob
|
|
|
|
logmsg Testing -V with changed variables
|
|
set foo 'bad foo'
|
|
set bar 'bad bar'
|
|
set baz 'bad baz'
|
|
frob
|
|
|
|
# This sequence of tests originally verified that functions `name2` and
|
|
# `name4` were created. See issue #2068. That behavior is not what we want.
|
|
# The function name must always be the first argument of the `function`
|
|
# command. See issue #2827.
|
|
function name1 -a arg1 arg2 ; echo hello; end
|
|
function -a arg1 arg2 name2 ; end
|
|
function name3 --argument-names arg1 arg2 ; echo hello; echo goodbye; end
|
|
function --argument-names arg1 arg2 name4 ; end
|
|
function name5 abc --argument-names def ; end
|
|
functions -q name1; and echo "Function name1 found"
|
|
functions -q name2; or echo "Function name2 not found as expected"
|
|
functions -q name3; and echo "Function name3 found"
|
|
functions -q name4; or echo "Function name4 not found as expected"
|
|
|
|
logmsg Verify that functions can be copied. Tests against regression of issue \#3601
|
|
functions -c name1 name1a
|
|
functions --copy name3 name3a
|
|
functions -q name1a
|
|
or echo "Function name1a not found as expected"
|
|
functions -q name3a
|
|
or echo "Function name3a not found as expected"
|
|
|
|
logmsg Checking that the copied functions are identical other than the name
|
|
# Poor man's diff because on some systems diff defaults to unified output, but that prints filenames.
|
|
#
|
|
set -l name1 (functions name1)
|
|
set -l name1a (functions name1a)
|
|
set -l name3 (functions name3)
|
|
set -l name3a (functions name3a)
|
|
echo $name1[1]
|
|
echo $name1a[1]
|
|
test "$name1[2..-1]" = "$name1a[2..-1]"; and echo "1 = 1a"
|
|
echo $name3[1]
|
|
echo $name3a[1]
|
|
test "$name3[2..-1]" = "$name3a[2..-1]"; and echo "3 = 3a"
|
|
|
|
logmsg Checking reserved names
|
|
function test; echo banana; end
|
|
exit 0
|