%prep if ! zmodload -s zsh/zutil; then ZTST_unimplemented='the zsh/zutil module is not available' else autoload -Uz zgetopt fi %test zgetopt -A '' -- a b c zgetopt -A '' -o '' -- a b c zgetopt -A '' -l '' -- a b c 0:-o or -l required ?(eval):zgetopt: missing option spec >-- a b c >-- a b c zgetopt -A '' -o - -- a b c zgetopt -A '' -o -a -- a b c zgetopt -A '' -o a- -- a b c zgetopt -A '' -o a+ -- a b c zgetopt -A '' -o a= -- a b c zgetopt -A '' -o a\\ -- a b c zgetopt -A '' -o :a -- a b c zgetopt -A '' -o a::: -- a b c zgetopt -A '' -o '' -- a b c zgetopt -A '' -o + -- a b c 0:weird short-option specs ?(eval):zgetopt: optspec with leading - (disable operand collection) not supported ?(eval):zgetopt: optspec with leading - (disable operand collection) not supported ?(eval):zgetopt: invalid short-option name: - ?(eval):zgetopt: invalid short-option name: + ?(eval):zgetopt: invalid short-option name: = ?(eval):zgetopt: invalid short-option name: \ ?(eval):zgetopt: invalid short-option name: : ?(eval):zgetopt: invalid short-option name: : >-- a b c >-- a b c zgetopt -A '' -l a,+ -- a b c zgetopt -A '' -l a,= -- a b c zgetopt -A '' -l a,\\ -- a b c zgetopt -A '' -l a,: -- a b c zgetopt -A '' -l a,:b -- a b c zgetopt -A '' -l a,b:b -- a b c zgetopt -A '' -l a,b::: -- a b c zgetopt -A '' -l '' -- a b c zgetopt -A '' -l , -- a b c zgetopt -A '' -l a,,,,,b -- a b c zgetopt -A '' -l - -- a b c --- 0:weird long-option specs ?(eval):zgetopt: invalid long-option spec: + ?(eval):zgetopt: invalid long-option spec: = ?(eval):zgetopt: invalid long-option spec: \ ?(eval):zgetopt: invalid long-option spec: : ?(eval):zgetopt: invalid long-option spec: :b ?(eval):zgetopt: invalid long-option spec: b:b ?(eval):zgetopt: invalid long-option spec: b::: >-- a b c >-- a b c >-- a b c >--- -- a b c zgetopt -A '' -o ab:c:: -- a b c zgetopt -A '' -o ab:c:: -- -a zgetopt -A '' -o ab:c:: -- -a a b c zgetopt -A '' -o ab:c:: -- -a a -b c zgetopt -A '' -o ab:c:: -- -a a -b -c zgetopt -A '' -o ab:c:: -- -a a -b -c d zgetopt -A '' -o ab:c:: -- -a a -b -c -c zgetopt -A '' -o ab:c:: -- -a a -b -c -c d zgetopt -A '' -o ab:c:: -- -a a -b -c -cd 0:short options >-- a b c >-a -- >-a -- a b c >-a -b c -- a >-a -b -c -- a >-a -b -c -- a d >-a -b -c -c '' -- a >-a -b -c -c '' -- a d >-a -b -c -c d -- a zgetopt -A '' -l aaa,bbb:,ccc:: -- a b c zgetopt -A '' -l aaa,bbb:,ccc:: -- --aaa zgetopt -A '' -l aaa,bbb:,ccc:: -- --aaa a b c zgetopt -A '' -l aaa,bbb:,ccc:: -- --aaa a --bbb c zgetopt -A '' -l aaa,bbb:,ccc:: -- --aaa a --bbb=c zgetopt -A '' -l aaa,bbb:,ccc:: -- --aaa a --bbb --ccc zgetopt -A '' -l aaa,bbb:,ccc:: -- --aaa a --bbb --ccc d zgetopt -A '' -l aaa,bbb:,ccc:: -- --aaa a --bbb --ccc --ccc zgetopt -A '' -l aaa,bbb:,ccc:: -- --aaa a --bbb --ccc --ccc d zgetopt -A '' -l aaa,bbb:,ccc:: -- --aaa a --bbb --ccc --ccc= d zgetopt -A '' -l aaa,bbb:,ccc:: -- --aaa a --bbb --ccc --ccc=d 0:long options >-- a b c >--aaa -- >--aaa -- a b c >--aaa --bbb c -- a >--aaa --bbb c -- a >--aaa --bbb --ccc -- a >--aaa --bbb --ccc -- a d >--aaa --bbb --ccc --ccc '' -- a >--aaa --bbb --ccc --ccc '' -- a d >--aaa --bbb --ccc --ccc '' -- a d >--aaa --bbb --ccc --ccc d -- a zgetopt -A '' -o '' 0:zero args to parse >-- zgetopt -A '' -o '' -- -- a b c zgetopt -A '' -o '' -- a b -- c zgetopt -A '' -o '' -- a b c -- zgetopt -A '' -o c -- a b -- -c zgetopt -A '' -o c -- a b - -c 0:parsing terminator >-- a b c >-- a b c >-- a b c >-- a b -c >-c -- a b - zgetopt -A '' -o a -- a -a b zgetopt -A '' -o +a -- a -a b POSIXLY_CORRECT=1 zgetopt -A '' -o a -- a -a b 0:POSIXLY_CORRECT >-a -- a b >-- a -a b >-- a -a b zgetopt -A '' -o '' -- 'foo bar' $'bar\tbaz' $'\a\'\a' 0:function-mode quoting style >-- 'foo bar' $'bar\tbaz' $'\C-G\'\C-G' zgetopt -A '' -o '' -- a -a b zgetopt -A '' -o '' -- a --a b 1:bad options ?(eval): bad option: -a ?(eval): bad option: --a zgetopt -A '' -o a: -- a -a zgetopt -A '' -l a: -- a --a 1:missing optargs ?(eval): missing argument for option: -a ?(eval): missing argument for option: --a zgetopt -A '' ; echo $? # missing spec zgetopt -A '' -o '' -x ; echo $? # bad option to zgetopt zgetopt -A '' -o '' -- -y; echo $? # bad option to parse -:return status *?\(eval\):zgetopt: missing option spec *>2 *?\(eval\):zgetopt: bad option: -x *?usage:* *>2 *?\(eval\): bad option: -y *>1 () { zgetopt -o a -- "$@"; typeset -p argv } -a b c () { local -a v; zgetopt -A v -o a -- "$@"; typeset -p argv v } -a b c 0:array output >typeset -g -a argv=( -a -- b c ) >typeset -g -a argv=( -a b c ) >typeset -a v=( -a -- b c ) zgetopt -A '' -o a: -- -x zgetopt -A '' -o a: -- -a () { zgetopt -A '' -o a: -- "$@"; : } -x func() { zgetopt -A '' -o a: -- "$@"; : }; func -x f1() { zgetopt -A '' -o a: -- "$@"; : }; f2() { f1 "$@" }; f2 -x 0:automatic name ?(eval): bad option: -x ?(eval): missing argument for option: -a ?(anon): bad option: -x ?func: bad option: -x ?f1: bad option: -x zgetopt -n aaa -A '' -o a: -- -x zgetopt -n aaa -A '' -o a: -- -a () { zgetopt -n bbb -A '' -o a: -- "$@"; : } -x func() { zgetopt -n ccc -A '' -o a: -- "$@"; : }; func -x f1() { zgetopt -n ddd -A '' -o a: -- "$@"; : }; f2() { f1 "$@" }; f2 -x 0:manual name with -n ?aaa: bad option: -x ?aaa: missing argument for option: -a ?bbb: bad option: -x ?ccc: bad option: -x ?ddd: bad option: -x () { zgetopt -A '' -n example.bash -o ab:c:: -l a-long,b-long:,c-long:: -- "$@" } \ -a --a-long \ -barg_bs1 -b arg_bs2 --b-long=arg_bl1 --b-long arg_bl2 \ -carg_cs1 -c not_arg_cs1 --c-long=arg_cl1 --c-long not_arg_cl2 \ arg_p "string with quotes and space: '' \"\" " 0:example from util-linux's getopt-example.bash >-a --a-long -b arg_bs1 -b arg_bs2 --b-long arg_bl1 --b-long arg_bl2 -c arg_cs1 -c '' --c-long arg_cl1 --c-long '' -- not_arg_cs1 not_arg_cl2 arg_p 'string with quotes and space: '\'\'' "" '