summaryrefslogtreecommitdiff
path: root/dotfiles/system/.zsh/modules/Test/A05execution.ztst
diff options
context:
space:
mode:
Diffstat (limited to 'dotfiles/system/.zsh/modules/Test/A05execution.ztst')
-rw-r--r--dotfiles/system/.zsh/modules/Test/A05execution.ztst312
1 files changed, 0 insertions, 312 deletions
diff --git a/dotfiles/system/.zsh/modules/Test/A05execution.ztst b/dotfiles/system/.zsh/modules/Test/A05execution.ztst
deleted file mode 100644
index 0804691..0000000
--- a/dotfiles/system/.zsh/modules/Test/A05execution.ztst
+++ /dev/null
@@ -1,312 +0,0 @@
-%prep
-
- storepath=($path)
-
- mkdir command.tmp command.tmp/dir1 command.tmp/dir2
-
- cd command.tmp
-
- print '#!/bin/sh\necho This is top' >tstcmd
-
- print '#!/bin/sh\necho This is dir1' >dir1/tstcmd
-
- print '#!/bin/sh\necho This is dir2' >dir2/tstcmd
-
- chmod 755 tstcmd dir1/tstcmd dir2/tstcmd
-
-%test
- ./tstcmd
-0:./prog execution
->This is top
-
- path=($ZTST_testdir/command.tmp/dir1
- $ZTST_testdir/command.tmp/dir2
- .)
- tstcmd
- path=($storepath)
-0:path (1)
->This is dir1
-
- path=(. command.tmp/dir{1,2})
- tstcmd
- path=($storepath)
-0:path (2)
->This is top
-
- functst() { print $# arguments:; print -l $*; }
- functst "Eines Morgens" "als Gregor Samsa"
- functst ""
- functst "aus unrühigen Träumen erwachte"
- foo="fand er sich in seinem Bett"
- bar=
- rod="zu einem ungeheuren Ungeziefer verwandelt."
- functst $foo $bar $rod
-# set up alias for next test
- alias foo='print This is alias one'
-0:function argument passing
->2 arguments:
->Eines Morgens
->als Gregor Samsa
->1 arguments:
->
->1 arguments:
->aus unrühigen Träumen erwachte
->2 arguments:
->fand er sich in seinem Bett
->zu einem ungeheuren Ungeziefer verwandelt.
-
- alias foo='print This is alias two'
- fn() { foo; }
- fn
-0:Aliases in functions
->This is alias one
-
- foo='Global foo'
- traptst() { local foo="Local foo"; trap 'print $foo' EXIT; }
- traptst
-0:EXIT trap environment
->Global foo
-
- functst() { return 0; print Ha ha; return 1; }
- functst
-0:return (1)
-
- functst() { return 1; print Ho ho; return 0; }
- functst
-1:return (2)
-
- unfunction functst
- fpath=(.)
- print "print This is functst." >functst
- autoload functst
- functst
-0:autoloading (1)
->This is functst.
-
- unfunction functst
- print "functst() { print This, too, is functst; }; print Hello." >functst
- typeset -fu functst
- functst
- functst
-0:autoloading with initialization
->Hello.
->This, too, is functst
-
- unfunction functst
- print "print Yet another version" >functst
- functst() { autoload -X; }
- functst
-0:autoloading via -X
->Yet another version
-
- chpwd() { print Changed to $PWD; }
- cd .
- unfunction chpwd
-0q:chpwd
->Changed to $ZTST_testdir/command.tmp
-
- chpwd() { print chpwd: changed to $PWD; }
- chpwdfn1() { print chpwdfn1: changed to $PWD; }
- chpwdfn2() { print chpwdfn2: changed to $PWD; }
- chpwd_functions=(chpwdfn1 '' chpwdnonexistentfn chpwdfn2)
- cd .
- unfunction chpwd
- unset chpwd_functions
-0q:chpwd_functions
->chpwd: changed to $ZTST_testdir/command.tmp
->chpwdfn1: changed to $ZTST_testdir/command.tmp
->chpwdfn2: changed to $ZTST_testdir/command.tmp
-
-# Hard to test periodic, precmd and preexec non-interactively.
-
- fn() { TRAPEXIT() { print Exit; }; }
- fn
-0:TRAPEXIT
->Exit
-
- unsetopt DEBUG_BEFORE_CMD
- unfunction fn
- print 'TRAPDEBUG() {
- print Line $LINENO
- }
- :
- unfunction TRAPDEBUG
- ' > fn
- autoload fn
- fn
- rm fn
-0:TRAPDEBUG
->Line 1
->Line 1
-
- unsetopt DEBUG_BEFORE_CMD
- unfunction fn
- print 'trap '\''print Line $LINENO'\'' DEBUG
- :
- trap - DEBUG
- ' > fn
- autoload fn
- fn
- rm fn
-0:trap DEBUG
->Line 1
->Line 2
-
- TRAPZERR() { print Command failed; }
- true
- false
- true
- false
- unfunction TRAPZERR
-0:TRAPZERR
->Command failed
->Command failed
-
- trap 'print Command failed again.' ZERR
- true
- false
- true
- false
- trap - ZERR
-0:trap ZERR
->Command failed again.
->Command failed again.
-
- false
- sleep 1000 &
- print $?
- kill $!
-0:Status reset by starting a backgrounded command
->0
-
- { setopt MONITOR } 2>/dev/null
- [[ -o MONITOR ]] || print -u $ZTST_fd 'Unable to change MONITOR option'
- repeat 2048; do (return 2 |
- return 1 |
- while true; do
- false
- break
- done;
- print "${pipestatus[@]}")
- ZTST_hashmark
- done | sort | uniq -c | sed 's/^ *//'
-0:Check whether '$pipestatus[]' behaves.
->2048 2 1 0
-F:This test checks for a bug in '$pipestatus[]' handling. If it breaks then
-F:the bug is still there or it reappeared. See workers-29973 for details.
-
- { setopt MONITOR } 2>/dev/null
- externFunc() { awk >/dev/null 2>&1; true; }
- false | true | false | true | externFunc
- echo $pipestatus
-0:Check $pipestatus with a known difficult case
->1 0 1 0 0
-F:This similar test was triggering a reproducible failure with pipestatus.
-
- { unsetopt MONITOR } 2>/dev/null
- coproc { read -et 5 || { print -u $ZTST_fd KILLED; kill -HUP -$$ } }
- print -u $ZTST_fd 'This test takes 5 seconds to fail...'
- { printf "%d\n" {1..20000} } 2>/dev/null | ( read -e )
- hang(){ printf "%d\n" {2..20000} | cat }; hang 2>/dev/null | ( read -e )
- print -p done
- read -et 6 -p
-0:Bug regression: piping a shell construct to an external process may hang
->1
->2
->done
-F:This test checks for a file descriptor leak that could cause the left
-F:side of a pipe to block on write after the right side has exited
-
- { setopt MONITOR } 2>/dev/null
- if [[ -o MONITOR ]]
- then
- ( while :; do print "This is a line"; done ) | () : &
- sleep 1
- jobs -l
- else
- print -u $ZTST_fd "Skipping pipe leak test, requires MONITOR option"
- print "[0] 0 0"
- fi
-0:Bug regression: piping to anonymous function; piping to backround function
-*>\[<->\] <-> <->
-F:This test checks for two different bugs, a parser segfault piping to an
-F:anonymous function, and a descriptor leak when backgrounding a pipeline
-
- print "autoload_redir() { print Autoloaded ksh style; } >autoload.log" >autoload_redir
- autoload -Uk autoload_redir
- autoload_redir
- print No output yet
- cat autoload.log
- functions autoload_redir
-0:
->No output yet
->Autoloaded ksh style
->autoload_redir () {
-> print Autoloaded ksh style
->} > autoload.log
-
-# This tests that we record the status of processes that have already exited
-# for when we wait for them.
-#
-# Actually, we don't guarantee here that the jobs have already exited, but
-# the order of the waits means it's highly likely we do need to recall a
-# previous status, barring accidents which shouldn't happen very often. In
-# other words, we rely on the test working repeatedly rather than just
-# once. The monitor option is irrelevant to the logic, so we'll make
-# our job easier by turning it off.
- { unsetopt MONITOR } 2>/dev/null
- (exit 1) &
- one=$!
- (exit 2) &
- two=$!
- (exit 3) &
- three=$!
- wait $three
- print $?
- wait $two
- print $?
- wait $one
- print $?
-0:The status of recently exited background jobs is recorded
->3
->2
->1
-
-# Regression test for workers/34060 (patch in 34065)
- setopt ERR_EXIT NULL_GLOB
- if false; then :; else echo if:$?; fi
- if false; then :; else for x in _*_; do :; done; echo for:$?; fi
-0:False "if" condition handled correctly by "for" loops with ERR_EXIT
->if:1
->for:0
-
-# Regression test for workers/34065 (uses setopt from preceding test)
- select x; do :; done; echo $?
- select x in; do :; done; echo $?
- select x in _*_; do :; done; echo $?
- unsetopt ERR_EXIT NULL_GLOB
-0:The status of "select" is zero when the loop body does not execute
->0
->0
->0
-
-# Regression test for workers/36392
- print -u $ZTST_fd 'This test takes 3 seconds and hangs the shell when it fails...'
- callfromchld() { true && { print CHLD } }
- TRAPCHLD() { callfromchld }
- sleep 2 & sleep 3; print OK
-0:Background job exit does not affect reaping foreground job
->CHLD
->OK
-
-# Regression test for workers/39839 and workers/39844
- () { if return 11; then :; fi }; echo $?
- () { while return 13; do :; done }; echo $?
- () { until return 17; do :; done }; echo $?
- () { until false; do return 19; done }; echo $?
-0:"return" in "if" or "while" conditional
->11
->13
->17
->19
-