summaryrefslogtreecommitdiff
path: root/dotfiles/system/.zsh/modules/Test/C04funcdef.ztst
diff options
context:
space:
mode:
Diffstat (limited to 'dotfiles/system/.zsh/modules/Test/C04funcdef.ztst')
-rw-r--r--dotfiles/system/.zsh/modules/Test/C04funcdef.ztst502
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