mirrored from git://git.code.sf.net/p/zsh/code
-
Notifications
You must be signed in to change notification settings - Fork 441
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
42156: new CHECK_RUNNING_JOBS option demanded by bash groupies
Also new job options. Also suppress debug error if rows or columns are reported as zero as this is normal without a physical terminal.
- Loading branch information
Peter Stephenson
committed
Dec 22, 2017
1 parent
349c957
commit 5f6a52c
Showing
7 changed files
with
217 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,186 @@ | ||
# Tests for interactive job control | ||
|
||
%prep | ||
|
||
if [[ $OSTYPE == cygwin ]]; then | ||
ZTST_unimplemented='the zsh/zpty module does not work on Cygwin' | ||
elif zmodload zsh/zpty 2> /dev/null; then | ||
zpty_start() { | ||
export PS1= PS2= | ||
zpty -d | ||
zpty zsh "${(q)ZTST_testdir}/../Src/zsh -fiV +Z" | ||
} | ||
zpty_input() { | ||
zpty -w zsh "${(F)@}" $'\n' | ||
} | ||
zpty_stop() { | ||
# exit twice in case of check_jobs | ||
zpty -w zsh $'exit\nexit\n' | ||
# zpty gives no output when piped without these braces (?) | ||
{ zpty -r zsh } | sed $'/[^[:space:]]/!d; s/\r$//;' | ||
zpty -d | ||
: | ||
} | ||
else | ||
ZTST_unimplemented='the zsh/zpty module is not available' | ||
fi | ||
|
||
%test | ||
|
||
zpty_start | ||
zpty_input 'setopt no_long_list_jobs' | ||
zpty_input ': &' | ||
zpty_input 'wait' | ||
zpty_stop | ||
0:job notification with no_long_list_jobs | ||
*>\[1] [0-9]## | ||
*>\[1] + done[[:space:]]##: | ||
|
||
zpty_start | ||
zpty_input 'setopt long_list_jobs' | ||
zpty_input ': &' | ||
zpty_input 'wait' | ||
zpty_stop | ||
0:job notification with long_list_jobs | ||
*>\[1] [0-9]## | ||
*>\[1] + [0-9]## done[[:space:]]##: | ||
|
||
zpty_start | ||
zpty_input 'setopt no_hup no_check_jobs' | ||
zpty_input 'sleep 3 &' | ||
zpty_stop | ||
0:running job with no_hup + no_check_jobs | ||
*>\[1] [0-9]## | ||
|
||
zpty_start | ||
zpty_input 'setopt no_check_jobs' | ||
zpty_input 'sleep 3 &' | ||
zpty_stop | ||
0:running job with no_check_jobs | ||
*>\[1] [0-9]## | ||
*>zsh:*SIGHUPed* | ||
|
||
zpty_start | ||
zpty_input 'setopt check_jobs no_check_running_jobs' | ||
zpty_input 'sleep 3 &' | ||
zpty_stop | ||
0:running job with check_jobs + no_check_running_jobs | ||
*>\[1] [0-9]## | ||
*>zsh:*SIGHUPed* | ||
|
||
zpty_start | ||
zpty_input 'setopt check_jobs check_running_jobs' | ||
zpty_input 'sleep 3 &' | ||
zpty_stop | ||
0:running job with check_jobs + check_running_jobs | ||
*>\[1] [0-9]## | ||
*>zsh:*running jobs* | ||
*>zsh:*SIGHUPed* | ||
|
||
zpty_start | ||
zpty_input 'setopt check_jobs no_check_running_jobs' | ||
zpty_input 'sleep 3' | ||
sleep 0.1 | ||
zpty_input $'\C-z' | ||
zpty_stop | ||
0:suspended job with check_jobs + no_check_running_jobs | ||
*>zsh:*(stopped|suspended)*sleep* | ||
*>zsh:*(stopped|suspended) jobs* | ||
# no 'SIGHUPed' message for suspended jobs | ||
|
||
zpty_start | ||
zpty_input 'setopt check_jobs check_running_jobs' | ||
zpty_input 'sleep 3' | ||
sleep 0.1 | ||
zpty_input $'\C-z' | ||
zpty_stop | ||
0:suspended job with check_jobs + check_running_jobs | ||
*>zsh:*(stopped|suspended)*sleep* | ||
*>zsh:*(stopped|suspended) jobs* | ||
# no 'SIGHUPed' message for suspended jobs | ||
|
||
zpty_start | ||
zpty_input 'sleep 5 & sleep 4 & sleep 3 &' | ||
zpty_input 'jobs' | ||
zpty_stop | ||
0:`jobs` (misc.) with multiple running jobs | ||
*>\[1] [0-9]## | ||
*>\[2] [0-9]## | ||
*>\[3] [0-9]## | ||
*>\[1] running*sleep 5* | ||
*>\[2] - running*sleep 4* | ||
*>\[3] + running*sleep 3* | ||
*>zsh:*SIGHUPed* | ||
|
||
zpty_start | ||
zpty_input 'sleep 3 &' | ||
zpty_input 'jobs -l' | ||
zpty_input 'jobs -p' | ||
zpty_stop | ||
0:`jobs -l` and `jobs -p` with running job | ||
*>\[1] [0-9]## | ||
*>\[1] + [0-9]## running*sleep* | ||
*>\[1] + [0-9]## running*sleep* | ||
*>zsh:*SIGHUPed* | ||
|
||
zpty_start | ||
zpty_input 'sleep 3 &' | ||
zpty_input 'jobs -d' | ||
zpty_stop | ||
0:`jobs -d` with running job | ||
*>\[1] [0-9]## | ||
*>\[1] + running*sleep* | ||
*>\(pwd : ?*\) | ||
*>zsh:*SIGHUPed* | ||
|
||
zpty_start | ||
zpty_input 'sleep 3 &' | ||
zpty_input 'jobs -r' | ||
zpty_input 'print -- -' | ||
zpty_input 'jobs -s' | ||
zpty_stop | ||
0:`jobs -r` and `jobs -s` with running job | ||
*>\[1] [0-9]## | ||
*>\[1] + running*sleep* | ||
*>- | ||
*>zsh:*SIGHUPed* | ||
|
||
zpty_start | ||
zpty_input 'sleep 5' | ||
sleep 0.1 | ||
zpty_input $'\C-z' | ||
zpty_input 'jobs -r' | ||
zpty_input 'print -- -' | ||
zpty_input 'jobs -s' | ||
zpty_stop | ||
0:`jobs -r` and `jobs -s` with suspended job | ||
*>zsh:*(stopped|suspended)*sleep* | ||
*>- | ||
*>\[1] + (stopped|suspended)*sleep* | ||
# no 'SIGHUPed' message for suspended jobs | ||
|
||
zpty_start | ||
zpty_input 'sleep 10 & sleep 9 & sleep 8 & sleep 7 &' | ||
sleep 0.1 | ||
zpty_input 'kill %4' | ||
sleep 0.1 | ||
zpty_input 'kill -HUP %3' | ||
sleep 0.1 | ||
zpty_input 'kill -INT %2' | ||
sleep 0.1 | ||
zpty_input 'kill -KILL %1' | ||
sleep 0.1 | ||
zpty_stop | ||
0:various `kill` signals with multiple running jobs | ||
*>\[1] [0-9]## | ||
*>\[2] [0-9]## | ||
*>\[3] [0-9]## | ||
*>\[4] [0-9]## | ||
*>\[4] ? terminate*sleep* | ||
*>\[3] ? hangup*sleep* | ||
*>\[2] ? interrupt*sleep* | ||
*>\[1] ? kill*sleep* | ||
|
||
%clean | ||
|
||
zmodload -ui zsh/zpty |