# Tests for interactive job control with parameter state %prep if 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_line() { local REPLY integer i for (( i = 0; i < ${1:-1}; ++i )); do zpty -r zsh REPLY print -r -- ${REPLY%%($'\r\n'|$'\n')} done } 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 : } if ! zmodload zsh/parameter 2> /dev/null; then ZTST_unimplemented='the zsh/parameter module is not available' fi else ZTST_unimplemented='the zsh/zpty module is not available' fi %test zpty_start zpty_input "MODULE_PATH=${(q)MODULE_PATH}" zpty_input 'sleep 3 &' zpty_input 'print $jobstates' zpty_input '(print $jobstates)' zpty_input 'jobs -s' zpty_stop 0:$jobstate for running job in main shell and subshell *>\[1] [0-9]## *>running:+:*=running *>running:+ *>zsh:*SIGHUPed*