summaryrefslogtreecommitdiff
path: root/Test
diff options
context:
space:
mode:
authordana <dana@dana.is>2025-04-27 07:58:23 -0500
committerdana <dana@dana.is>2025-04-27 07:58:23 -0500
commit84ef0c523878625feeed8cd0a5c142929d8b4d06 (patch)
tree7a15bc37dc6c74496aaf7aec3326f7d2cef222c0 /Test
parent2601c191865d3d49e3e57fbb9f6224bcbd22f7a4 (diff)
downloadzsh-84ef0c523878625feeed8cd0a5c142929d8b4d06.tar.gz
zsh-84ef0c523878625feeed8cd0a5c142929d8b4d06.zip
53516: add zgetopt contrib function
Diffstat (limited to 'Test')
-rw-r--r--Test/Z04zgetopt.ztst206
1 files changed, 206 insertions, 0 deletions
diff --git a/Test/Z04zgetopt.ztst b/Test/Z04zgetopt.ztst
new file mode 100644
index 000000000..c2bc22be0
--- /dev/null
+++ b/Test/Z04zgetopt.ztst
@@ -0,0 +1,206 @@
+%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
+?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
+?zgetopt: optspec with leading - (disable operand collection) not supported
+?zgetopt: optspec with leading - (disable operand collection) not supported
+?zgetopt: invalid short-option name: -
+?zgetopt: invalid short-option name: +
+?zgetopt: invalid short-option name: =
+?zgetopt: invalid short-option name: \
+?zgetopt: invalid short-option name: :
+?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
+?zgetopt: invalid long-option spec: +
+?zgetopt: invalid long-option spec: =
+?zgetopt: invalid long-option spec: \
+?zgetopt: invalid long-option spec: :
+?zgetopt: invalid long-option spec: :b
+?zgetopt: invalid long-option spec: b:b
+?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
+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 d -- a
+
+ zgetopt -A '' -al aaa,bbb:,ccc:: -- a b c
+ zgetopt -A '' -al aaa,bbb:,ccc:: -- --aaa a b c
+ zgetopt -A '' -al aaa,bbb:,ccc:: -- -aaa
+ zgetopt -A '' -al aaa,bbb:,ccc:: -- -aaa a b c
+ zgetopt -A '' -al aaa,bbb:,ccc:: -- -aaa a -bbb c
+ zgetopt -A '' -al aaa,bbb:,ccc:: -- -aaa a -bbb=c
+ zgetopt -A '' -al aaa,bbb:,ccc:: -- -aaa a -bbb -ccc
+ zgetopt -A '' -al aaa,bbb:,ccc:: -- -aaa a -bbb -ccc d
+ zgetopt -A '' -al aaa,bbb:,ccc:: -- -aaa a -bbb -ccc -ccc
+ zgetopt -A '' -al aaa,bbb:,ccc:: -- -aaa a -bbb -ccc -ccc d
+ zgetopt -A '' -al aaa,bbb:,ccc:: -- -aaa a -bbb -ccc -ccc=d
+0:long options with -a (Sun style)
+>-- a b c
+?(eval): bad option: --aaa
+>-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 d -- a
+
+ zgetopt -A '' -al a: -- -a=b
+0:single-character long option with -a
+>-a '=b' --
+
+ 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 '' -- $'\a\'\a'
+0:function-mode quoting style
+>-- $'\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 '' ; echo $? # missing spec
+ zgetopt -A '' -o '' -x ; echo $? # bad option to zgetopt
+ zgetopt -A '' -o '' -- -y; echo $? # bad option to parse
+0:return status
+*?zgetopt: missing option spec
+*>2
+*?zgetopt:zparseopts:*: 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