mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-30 22:34:29 +08:00
17dff8c569
Rewrite the `abbr` function to store each abbreviation in a separate variable. This greatly improves the efficiency. For the common case it is 5x faster. For pathological cases it is upwards of 100x faster. Most people should be able to unconditionally define abbreviations in their config.fish without a noticable slow down. Fixes #4048
63 lines
1.9 KiB
Fish
63 lines
1.9 KiB
Fish
# vim: set filetype=fish:
|
|
#
|
|
# Test the `functions` builtin
|
|
|
|
function f1
|
|
end
|
|
|
|
# ==========
|
|
# Verify that `functions --details` works as expected when given too many args.
|
|
set x (functions --details f1 f2 2>&1)
|
|
if test "$x" != "functions: Expected exactly one function name for --details"
|
|
echo "Unexpected output for 'functions --details f1 f2': $x" >&2
|
|
end
|
|
|
|
# ==========
|
|
# Verify that `functions --details` works as expected when given the name of a
|
|
# known function.
|
|
set x (functions --details f1)
|
|
if test "$x" != "stdin"
|
|
echo "Unexpected output for 'functions --details f1': $x" >&2
|
|
end
|
|
|
|
# ==========
|
|
# Verify that `functions --details` works as expected when given the name of an
|
|
# unknown function.
|
|
set x (functions -D f2)
|
|
if test "$x" != "n/a"
|
|
echo "Unexpected output for 'functions --details f2': $x" >&2
|
|
end
|
|
|
|
# ==========
|
|
# Verify that `functions --details` works as expected when given the name of a
|
|
# function that could be autoloaded but isn't currently loaded.
|
|
set x (functions -D abbr)
|
|
if test (count $x) -ne 1
|
|
or not string match -q '*/share/functions/abbr.fish' "$x"
|
|
echo "Unexpected output for 'functions -D abbr': $x" >&2
|
|
end
|
|
|
|
# ==========
|
|
# Verify that `functions --verbose --details` works as expected when given the name of a
|
|
# function that was autoloaded.
|
|
set x (functions -v -D abbr)
|
|
if test (count $x) -ne 5
|
|
or not string match -q '*/share/functions/abbr.fish' $x[1]
|
|
or test $x[2] != autoloaded
|
|
or test $x[3] != 1
|
|
or test $x[4] != scope-shadowing
|
|
or test $x[5] != 'Manage abbreviations using new fish 3.0 scheme.'
|
|
echo "Unexpected output for 'functions -v -D abbr': $x" >&2
|
|
end
|
|
|
|
# ==========
|
|
# Verify that `functions --verbose --details` properly escapes a function
|
|
# with a multiline description.
|
|
function multiline_descr -d 'line 1\n
|
|
line 2 & more; way more'
|
|
end
|
|
set x (functions -v -D multiline_descr)
|
|
if test $x[5] != 'line 1\\\\n\\nline 2 & more; way more'
|
|
echo "Unexpected output for 'functions -v -D multiline_descr': $x" >&2
|
|
end
|