summaryrefslogtreecommitdiff
path: root/Test
diff options
context:
space:
mode:
authordana <dana@dana.is>2025-04-13 18:00:54 -0500
committerdana <dana@dana.is>2025-04-19 18:48:31 -0500
commit8c3c45732131433645686cdb6bbbb8974230c5a9 (patch)
treeccaa627886d33bf6d8ae2c84b08e511880870eef /Test
parent494fcd1799d4d2d236d3183de12b0c99ceb83b1c (diff)
downloadzsh-8c3c45732131433645686cdb6bbbb8974230c5a9.tar.gz
zsh-8c3c45732131433645686cdb6bbbb8974230c5a9.zip
53483: zparseopts -G: accept only '--' as parsing terminator
Diffstat (limited to 'Test')
-rw-r--r--Test/V12zparseopts.ztst25
1 files changed, 25 insertions, 0 deletions
diff --git a/Test/V12zparseopts.ztst b/Test/V12zparseopts.ztst
index e465d0e0c..e6139ea5e 100644
--- a/Test/V12zparseopts.ztst
+++ b/Test/V12zparseopts.ztst
@@ -341,3 +341,28 @@
>ret: 1, gopt: -G, optv: , argv: -foobar 1 2 3
>ret: 0, gopt: -G, optv: -foo=bar, argv: 1 2 3
>ret: 0, gopt: -G, optv: -foo=, argv: bar 1 2 3
+
+ for term in - --; do
+ # With -D -E -G
+ () {
+ local -a optv
+ zparseopts -a optv -D -E -F -G - -foo -bar
+ print -r - ret: $?, term: $term, optv: $optv, argv: $argv
+ } --foo x --bar $term --baz
+ for gopt in '' -G; do
+ # With -D + with/without -G
+ () {
+ local -a optv
+ zparseopts -a optv -D -F $gopt - -foo -bar
+ print -r - ret: $?, term: $term, gopt: $gopt, optv: $optv, argv: $argv
+ } --foo $term --bar
+ done
+ done
+0:only -- acts as explicit parsing terminator with -G
+?(anon):zparseopts:2: bad option: --baz
+>ret: 1, term: -, optv: , argv: --foo x --bar - --baz
+>ret: 0, term: -, gopt: , optv: --foo, argv: --bar
+>ret: 0, term: -, gopt: -G, optv: --foo, argv: - --bar
+>ret: 0, term: --, optv: --foo --bar, argv: x -- --baz
+>ret: 0, term: --, gopt: , optv: --foo, argv: --bar
+>ret: 0, term: --, gopt: -G, optv: --foo, argv: --bar