summaryrefslogtreecommitdiff
path: root/Test/comptest
diff options
context:
space:
mode:
Diffstat (limited to 'Test/comptest')
-rw-r--r--Test/comptest140
1 files changed, 66 insertions, 74 deletions
diff --git a/Test/comptest b/Test/comptest
index 6a37bb15e..0b6962d6e 100644
--- a/Test/comptest
+++ b/Test/comptest
@@ -1,39 +1,34 @@
-#!/usr/local/bin/zsh -f
+comptestinit () {
+ setopt extendedglob
+ [[ -d $ZTST_testdir/Modules/zsh ]] && module_path=( $ZTST_testdir/Modules )
+ fpath=( $ZTST_srcdir/../(Completion|Functions)/*~*/CVS(/) )
-[[ -d $ZTST_testdir/Modules/zsh ]] && module_path=( $ZTST_testdir/Modules )
+ zmodload -i zsh/zpty
-zmodload -i zsh/zpty
-setopt extendedglob
+ comptest_zsh=${ZSH:-zsh}
+ termcap_ce="$(echotc ce)"
-fpath=( $ZTST_srcdir/../(Completion|Functions)/*~*/CVS(/) )
-
-debug=
-dump=(-D)
-code=
-zsh=${ZSH:-zsh}
-termcap_ce="$(echotc ce)"
-
-debug=yes
-while getopts Dd:c:z: opt; do
- case $opt in
- D) debug=yes;;
- d) dump=(-d "$OPTARG");;
- c) code="$OPTARG";;
- z) zsh="$OPTARG";;
- esac
-done
-(( OPTIND > 1 )) && shift $(( OPTIND - 1 ))
+ while getopts z: opt; do
+ case $opt in
+ z) comptest_zsh="$OPTARG";;
+ esac
+ done
+ (( OPTIND > 1 )) && shift $(( OPTIND - 1 ))
-input="$*"
+ export PS1="<PROMPT>"
+ zpty zsh "$comptest_zsh" -f
-tmp=/tmp/comptest.$$
+ zpty -r zsh log1 "*<PROMPT>*" || {
+ print "first prompt doesn't appered."
+ return 1
+ }
-cat <<End >$tmp
-module_path=( $module_path )
-fpath=( $fpath )
+ comptesteval \
+"module_path=( $module_path )" \
+"fpath=( $fpath )" \
+"ZLS_COLORS='no=<NO>:fi=<FI>:di=<DI>:ln=<LN>:pi=<PI>:so=<SO>:bd=<BD>:cd=<CD>:ex=<EX>:mi=<MI>:tc=<TC>:sp=<SP>:lc=<LC>:ec=<EC>\\n:rc=<RC>'" \
+'LISTMAX=10000000
stty columns 80 rows 24
-LISTMAX=10000000
-ZLS_COLORS='no=<NO>:fi=<FI>:di=<DI>:ln=<LN>:pi=<PI>:so=<SO>:bd=<BD>:cd=<CD>:ex=<EX>:mi=<MI>:tc=<TC>:sp=<SP>:lc=<LC>:ec=<EC>\n:rc=<RC>'
bindkey -e
autoload -U compinit
compinit $dump
@@ -49,7 +44,7 @@ zmodload zsh/complist
expand-or-complete-with-report () {
print -lr "<WIDGET><expand-or-complete>"
zle expand-or-complete
- print -lr - "<LBUFFER>\$LBUFFER</LBUFFER>" "<RBUFFER>\$RBUFFER</RBUFFER>"
+ print -lr - "<LBUFFER>$LBUFFER</LBUFFER>" "<RBUFFER>$RBUFFER</RBUFFER>"
zle clear-screen
zle -R
}
@@ -61,8 +56,9 @@ list-choices-with-report () {
}
finish () {
print "<WIDGET><finish>"
- sleep 1
- exit 0
+ zle kill-whole-line
+ zle clear-screen
+ zle -R
}
zle -N expand-or-complete-with-report
zle -N list-choices-with-report
@@ -70,54 +66,50 @@ zle -N finish
bindkey "^I" expand-or-complete-with-report
bindkey "^D" list-choices-with-report
bindkey "^Z" finish
-$code
-End
-
-export PS1="<PROMPT>"
-zpty zsh "$zsh" -f
-
-zpty -r zsh log1 "*<PROMPT>*" || {
- print first prompt doesn\'t appered.
- exit 1
+'
}
-zpty -w zsh ". $tmp"
-zpty -r zsh log2 "*<PROMPT>*" || {
- print second prompt doesn\'t appered.
- exit 1
-}
-rm $tmp
+comptesteval () {
+ local tmp=/tmp/comptest.$$
-zpty -n -w zsh "$input"$'\C-Z'
-zpty -r zsh log "*<WIDGET><finish>*" || {
- print finish widget doesn\'t invoked.
- exit 1
+ print -lr - "$@" > $tmp
+ zpty -w zsh ". $tmp"
+ zpty -r zsh log_eval "*<PROMPT>*" || {
+ print "prompt doesn't appered."
+ return 1
+ }
+ rm $tmp
}
-if [[ -n "$debug" ]]; then
- print -lr - "$log" > /tmp/comptest.debug
-fi
+comptest () {
+ input="$*"
+ zpty -n -w zsh "$input"$'\C-Z'
+ zpty -r zsh log "*<WIDGET><finish>*<PROMPT>*" || {
+ print "finish widget doesn't invoked."
+ return 1
+ }
-logs=(${(s:<WIDGET>:)log})
-shift logs
+ logs=(${(s:<WIDGET>:)log})
+ shift logs
-for log in "$logs[@]"; do
- if [[ "$log" = (#b)*$'<LBUFFER>'(*)$'</LBUFFER>\r\n<RBUFFER>'(*)$'</RBUFFER>'* ]]; then
- print -lr "line: {$match[1]}{$match[2]}"
- fi
- while (( ${(N)log#*(#b)(<LC><(??)><RC>(*)<EC>|<DESCRIPTION>(*)</DESCRIPTION>|<MESSAGE>(*)</MESSAGE>|<COMPADD>(*)</COMPADD>)} )); do
- log="${log[$mend[1]+1,-1]}"
- if (( 0 <= $mbegin[2] )); then
- if [[ $match[2] != TC && $match[3] != \ # ]]; then
- print -lr "$match[2]:{${match[3]%$termcap_ce}}"
- fi
- elif (( 0 <= $mbegin[4] )); then
- print -lr "DESCRIPTION:{$match[4]}"
- elif (( 0 <= $mbegin[5] )); then
- print -lr "MESSAGE:{$match[5]}"
- elif (( 0 <= $mbegin[6] )); then
- result=`echo $match[6] | tr -d '\012\015'`
- print -lr "COMPADD:{$result}"
+ for log in "$logs[@]"; do
+ if [[ "$log" = (#b)*$'<LBUFFER>'(*)$'</LBUFFER>\r\n<RBUFFER>'(*)$'</RBUFFER>'* ]]; then
+ print -lr "line: {$match[1]}{$match[2]}"
fi
+ while (( ${(N)log#*(#b)(<LC><(??)><RC>(*)<EC>|<DESCRIPTION>(*)</DESCRIPTION>|<MESSAGE>(*)</MESSAGE>|<COMPADD>(*)</COMPADD>)} )); do
+ log="${log[$mend[1]+1,-1]}"
+ if (( 0 <= $mbegin[2] )); then
+ if [[ $match[2] != TC && $match[3] != \ # ]]; then
+ print -lr "$match[2]:{${match[3]%$termcap_ce}}"
+ fi
+ elif (( 0 <= $mbegin[4] )); then
+ print -lr "DESCRIPTION:{$match[4]}"
+ elif (( 0 <= $mbegin[5] )); then
+ print -lr "MESSAGE:{$match[5]}"
+ elif (( 0 <= $mbegin[6] )); then
+ result=`echo $match[6] | tr -d '\012\015'`
+ print -lr "COMPADD:{$result}"
+ fi
+ done
done
-done
+}