summaryrefslogtreecommitdiffstats
path: root/Test
diff options
context:
space:
mode:
authordana <dana@dana.is>2026-04-29 23:13:01 -0500
committerdana <dana@dana.is>2026-04-29 23:13:16 -0500
commita9aa972cf44e49c8ffde6517677e75fe8fceea34 (patch)
tree0d75cd9516d5b1450551fc74a4c6904bc1136551 /Test
parentunposted: completion: add _compinit (diff)
downloadzsh-a9aa972cf44e49c8ffde6517677e75fe8fceea34.tar
zsh-a9aa972cf44e49c8ffde6517677e75fe8fceea34.tar.gz
zsh-a9aa972cf44e49c8ffde6517677e75fe8fceea34.tar.bz2
zsh-a9aa972cf44e49c8ffde6517677e75fe8fceea34.tar.lz
zsh-a9aa972cf44e49c8ffde6517677e75fe8fceea34.tar.xz
zsh-a9aa972cf44e49c8ffde6517677e75fe8fceea34.tar.zst
zsh-a9aa972cf44e49c8ffde6517677e75fe8fceea34.zip
54395: contrib: add zgetopt (again)
Diffstat (limited to 'Test')
-rw-r--r--Test/Z04zgetopt.ztst196
1 files changed, 196 insertions, 0 deletions
diff --git a/Test/Z04zgetopt.ztst b/Test/Z04zgetopt.ztst
new file mode 100644
index 000000000..f1a14d329
--- /dev/null
+++ b/Test/Z04zgetopt.ztst
@@ -0,0 +1,196 @@
+%prep
+
+ autoload -Uz zgetopt
+
+%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: '\'\'' "" '