# 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