diff options
Diffstat (limited to 'dotfiles/system/.zsh/modules/Test/C04funcdef.ztst')
| -rw-r--r-- | dotfiles/system/.zsh/modules/Test/C04funcdef.ztst | 502 |
1 files changed, 0 insertions, 502 deletions
diff --git a/dotfiles/system/.zsh/modules/Test/C04funcdef.ztst b/dotfiles/system/.zsh/modules/Test/C04funcdef.ztst deleted file mode 100644 index 0cf2b58..0000000 --- a/dotfiles/system/.zsh/modules/Test/C04funcdef.ztst +++ /dev/null @@ -1,502 +0,0 @@ -%prep - - mkdir funcdef.tmp - cd funcdef.tmp - setopt chaselinks - cd . - unsetopt chaselinks - mydir=$PWD - -%test - - fn1() { return 1; } - fn2() { - fn1 - print $? - return 2 - } - fn2 -2:Basic status returns from functions ->1 - - fnz() { } - false - fnz -0:Empty function body resets status - - fn3() { return 3; } - fnstat() { print $?; } - fn3 - fnstat -0:Status is not reset on non-empty function body ->3 - - function f$$ () { - print regress expansion of function names - } - f$$ -0:Regression test: 'function f$$ () { ... }' ->regress expansion of function names - - function foo () print bar - foo -0:Function definition without braces ->bar - - functions -M m1 - m1() { (( $# )) } - print $(( m1() )) - print $(( m1(1) )) - print $(( m1(1,2) )) -0:User-defined math functions, argument handling ->0 ->1 ->2 - - functions -M m2 - m2() { - integer sum - local val - for val in $*; do - (( sum += $val )) - done - } - print $(( m2(1) )) - print $(( m2(1,3+3,4**2) )) -0:User-defined math functions, complex argument handling ->1 ->23 - - functions -M m3 1 2 - m3() { (( 1 )) } - print zero - (print $(( m3() ))) - print one - print $(( m3(1) )) - print two - print $(( m3(1,2) )) - print three - (print $(( m3(1,2,3) ))) -1:User-defined math functions, argument checking ->zero ->one ->1 ->two ->1 ->three -?(eval):4: wrong number of arguments: m3() -?(eval):10: wrong number of arguments: m3(1,2,3) - - functions -M m4 0 0 testmathfunc - functions -M m5 0 0 testmathfunc - testmathfunc() { - if [[ $0 = m4 ]]; then - (( 4 )) - else - (( 5 )) - fi - } - print $(( m4() )) - print $(( m5() )) -0:User-defined math functions, multiple interfaces ->4 ->5 - - command_not_found_handler() { - print "Great News! I've handled the command:" - print "$1" - print "with arguments:" - print -l ${argv[2,-1]} - } - ACommandWhichHadBetterNotExistOnTheSystem and some "really useful" args -0:Command not found handler, success ->Great News! I've handled the command: ->ACommandWhichHadBetterNotExistOnTheSystem ->with arguments: ->and ->some ->really useful ->args - -# ' deconfuse emacs - - command_not_found_handler() { - print "Your command:" >&2 - print "$1" >&2 - print "has gone down the tubes. Sorry." >&2 - return 42 - } - ThisCommandDoesNotExistEither -42:Command not found handler, failure -?Your command: -?ThisCommandDoesNotExistEither -?has gone down the tubes. Sorry. - - local variable=outside - print "I am $variable" - function { - local variable=inside - print "I am $variable" - } - print "I am $variable" - () { - local variable="inside again" - print "I am $variable" - } - print "I am $variable" -0:Anonymous function scope ->I am outside ->I am inside ->I am outside ->I am inside again ->I am outside - - integer i - for (( i = 0; i < 10; i++ )); do function { - case $i in - ([13579]) - print $i is odd - ;| - ([2468]) - print $i is even - ;| - ([2357]) - print $i is prime - ;; - esac - }; done -0:Anonymous function with patterns in loop ->1 is odd ->2 is even ->2 is prime ->3 is odd ->3 is prime ->4 is even ->5 is odd ->5 is prime ->6 is even ->7 is odd ->7 is prime ->8 is even ->9 is odd - - echo stuff in file >file.in - function { - sed 's/stuff/rubbish/' - } <file.in >file.out - cat file.out -0:Anonymous function redirection ->rubbish in file - - variable="Do be do" - print $variable - function { - print $variable - local variable="Da de da" - print $variable - function { - print $variable - local variable="Dum da dum" - print $variable - } - print $variable - } - print $variable -0:Nested anonymous functions ->Do be do ->Do be do ->Da de da ->Da de da ->Dum da dum ->Da de da ->Do be do - - () (cat $1 $2) <(print process expanded) =(print expanded to file) -0:Process substitution with anonymous functions ->process expanded ->expanded to file - - () { print This has arguments $*; } of all sorts; print After the function - function { print More stuff $*; } and why not; print Yet more -0:Anonymous function with arguments ->This has arguments of all sorts ->After the function ->More stuff and why not ->Yet more - - fn() { - (){ print Anonymous function 1 $*; } with args - function { print Anonymous function 2 $*; } with more args - print Following bit - } - functions fn -0:Text representation of anonymous function with arguments ->fn () { -> () { -> print Anonymous function 1 $* -> } with args -> () { -> print Anonymous function 2 $* -> } with more args -> print Following bit ->} - - touch yes no - () { echo $1 } (y|z)* - (echo here) - () { echo $* } some (y|z)* - () { echo empty };(echo here) -0:Anonymous function arguments and command arguments ->yes ->here ->some yes ->empty ->here - - if true; then f() { echo foo1; } else f() { echo bar1; } fi; f - if false; then f() { echo foo2; } else f() { echo bar2; } fi; f -0:Compatibility with other shells when not anonymous functions ->foo1 ->bar2 - - ( - setopt ignorebraces - fpath=(.) - print "{ echo OK }\n[[ -o ignorebraces ]] || print 'ignorebraces is off'" \ - >emufunctest - (autoload -z emufunctest; emufunctest) 2>&1 - emulate zsh -c 'autoload -Uz emufunctest' - emufunctest - [[ -o ignorebraces ]] && print 'ignorebraces is still on here' - ) -0:sticky emulation applies to autoloads and autoloaded function execution ->emufunctest:3: parse error near `\n' ->OK ->ignorebraces is off ->ignorebraces is still on here -#` (matching error message for editors parsing the file) - -# lsfoo should not be expanded as an anonymous function argument - alias lsfoo='This is not ls.' - () (echo anon func; echo "$@") lsfoo -0:Anonmous function with arguments in a form nobody sane would ever use but unfortunately we have to support anyway ->anon func ->lsfoo - - print foo | () cat -0:Simple anonymous function should not simplify enclosing pipeline ->foo - - alias fooalias=barexpansion - funcwithalias() { echo $(fooalias); } - functions funcwithalias - barexpansion() { print This is the correct output.; } - funcwithalias -0:Alias expanded in command substitution does not appear expanded in text ->funcwithalias () { -> echo $(fooalias) ->} ->This is the correct output. - - unfunction command_not_found_handler # amusing but unhelpful - alias first='firstfn1 firstfn2' second='secondfn1 secondfn2' - function first second { print This is function $0; } - first - second - firstfn1 - secondfn1 -127:No alias expansion after "function" keyword ->This is function first ->This is function second -?(eval):6: command not found: firstfn1 -?(eval):7: command not found: secondfn1 - - ( - fpath=(.) - print "print oops was successfully autoloaded" >oops - oops() { eval autoload -X } - oops - which -x2 oops - ) -0:autoload containing eval ->oops was successfully autoloaded ->oops () { -> print oops was successfully autoloaded ->} - - ( - fpath=(.) - printf '%s\n' 'oops(){}' 'ninjas-earring(){}' 'oops "$@"' >oops - autoload oops - oops - whence -v oops - ) -0q:whence -v of zsh-style autoload ->oops is a shell function from $mydir/oops - - ( - fpath=(.) - mkdir extra - print 'print "I have been loaded by explicit path."' >extra/spec - autoload -Uz $PWD/extra/spec - spec - ) -0:autoload with explicit path ->I have been loaded by explicit path. - - ( - fpath=(.) - print 'print "I have been loaded by default path."' >def - autoload -Uz $PWD/extra/def - def - ) -1:autoload with explicit path with function in normal path, no -d -?(eval):5: def: function definition file not found - - ( - fpath=(.) - autoload -dUz $PWD/extra/def - def - ) -0:autoload with explicit path with function in normal path, with -d ->I have been loaded by default path. - - ( - cd extra - fpath=(.) - autoload -r spec - cd .. - spec - ) -0:autoload -r ->I have been loaded by explicit path. - - ( - cd extra - fpath=(.) - autoload -r def - cd .. - def - ) -0:autoload -r is permissive ->I have been loaded by default path. - - ( - cd extra - fpath=(.) - autoload -R def - ) -1:autoload -R is not permissive -?(eval):4: def: function definition file not found - - ( - spec() { autoload -XUz $PWD/extra; } - spec - ) -0:autoload -X with path ->I have been loaded by explicit path. - -# The line number 1 here and in the next test seems suspect, -# but this example proves it's not down to the new features -# being tested here. - ( - fpath=(.) - cod() { autoload -XUz; } - cod - ) -1:autoload -X with no path, failure -?(eval):1: cod: function definition file not found - - ( - fpath=(.) - def() { autoload -XUz $PWD/extra; } - def - ) -1:autoload -X with wrong path and no -d -?(eval):1: def: function definition file not found - - ( - fpath=(.) - def() { autoload -dXUz $PWD/extra; } - def - ) -0:autoload -dX with path ->I have been loaded by default path. - - ( - fpath=(.) - print 'loadthisfunc() { autoload -X }' >loadthisfunc_sourceme - print 'print Function was loaded correctly.' >loadthisfunc - source $PWD/loadthisfunc_sourceme - loadthisfunc - ) -0: autoload -X interaction with absolute filename used for source location ->Function was loaded correctly. - - ( - fpath=() - mkdir extra2 - for f in fun2a fun2b; do - print "print $f" >extra2/$f - done - repeat 3; do - autoload $PWD/extra2/fun2{a,b} $PWD/extra/spec - fun2a - fun2b - spec - unfunction fun2a fun2b spec - autoload $PWD/extra2/fun2{a,b} $PWD/extra/spec - spec - fun2b - fun2a - unfunction fun2a fun2b spec - done - ) -0: Exercise the directory name cache for autoloads ->fun2a ->fun2b ->I have been loaded by explicit path. ->I have been loaded by explicit path. ->fun2b ->fun2a ->fun2a ->fun2b ->I have been loaded by explicit path. ->I have been loaded by explicit path. ->fun2b ->fun2a ->fun2a ->fun2b ->I have been loaded by explicit path. ->I have been loaded by explicit path. ->fun2b ->fun2a - - not_trashed() { print This function was not trashed; } - autoload -Uz /foo/bar/not_trashed - not_trashed -0:autoload with absolute path doesn't trash loaded function ->This function was not trashed - - # keep spec from getting loaded in parent shell for simplicity - ( - if whence spec; then print spec already loaded >&2; exit 1; fi - autoload -Uz $PWD/spec - autoload -Uz $PWD/extra/spec - spec - ) -0:autoload with absolute path can be overridden if not yet loaded ->I have been loaded by explicit path. - - ( - if whence spec; then print spec already loaded >&2; exit 1; fi - autoload -Uz $PWD/extra/spec - autoload spec - spec - ) -0:autoload with absolute path not cancelled by bare autoload ->I have been loaded by explicit path. - -%clean - - rm -f file.in file.out |
