Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: [PATCH] getopts: Accurately report '-x' or '+x' in error messages
- X-seq: zsh-workers 42065
- From: dana <dana@xxxxxxx>
- To: zsh-workers@xxxxxxx
- Subject: Re: [PATCH] getopts: Accurately report '-x' or '+x' in error messages
- Date: Fri, 1 Dec 2017 03:39:00 -0600
- Cc: Peter Stephenson <p.stephenson@xxxxxxxxxxx>
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dana-is.20150623.gappssmtp.com; s=20150623; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=ZetRrbuVh6hdA/bbOUu9lf9Asgj8SPUIE2U4xTugTZ8=; b=TWboVwmdK2UBPfHWenfNG/XcB/s9X9iusno72TZIkNrAg/RfygHiGed6+/G6je4Apb UFjasNq5Q1ey6M9UI3Q1/Tgc9ZA6IbFuTtoVPee/tkPofwJn8bUXT3O9S8fpd9wu8XBV pVpH5/Gpr8W4pt+4iVJuyDX/wtCATbBRlP5papC1CCkjv9OwRO2FhYKMvcXzeYFeBl4V eAiwyGfmCLw0NlkbeINFhhOkHwW34fxocjWL/KUmmXJxMg1vC9v9EJMblzi83LgmUI/v b5qoJEu0Y8hGONqKd85my/jN3nb4g2/fXMnZy0gjhc53aIZ3h7LQcKVXoRAP9Gowa9qt 3dxw==
- In-reply-to: <20171201092026.269c1dcb@pwslap01u.europe.root.pri>
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- List-unsubscribe: <mailto:zsh-workers-unsubscribe@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
- References: <CGME20171201071310epcas1p4e06bf3264433a5d7318fbb9d6c594c18@epcas1p4.samsung.com> <733779CE-86B9-4178-B38B-7E64390BB4C6@dana.is> <20171201092026.269c1dcb@pwslap01u.europe.root.pri>
> Thanks, I've committed this. I'd be happy to add some getopts tests if
> you came up with any.
I did actually come up with some, though i'm slightly unsure of their quality.
How do you feel about these?
dana
diff --git a/Test/B10getopts.ztst b/Test/B10getopts.ztst
new file mode 100644
index 000000000..7eba5a4b1
--- /dev/null
+++ b/Test/B10getopts.ztst
@@ -0,0 +1,81 @@
+# Test the getopts builtin.
+
+%prep
+
+ test_getopts() {
+ local OPTARG OPTIND opt
+ local -a res
+ while getopts abc: opt 2>&1; do
+ [[ $opt == [?:] ]] || res+=( $opt )
+ done
+ (( $#res )) && print -r -- $res
+ return $(( $#res ? 0 : 1 ))
+ }
+
+%test
+
+ test_getopts
+1:no arguments
+
+ test_getopts foo
+1:one operand
+
+ test_getopts -a
+0:one option
+>a
+
+ test_getopts -a foo
+0:one option, one operand
+>a
+
+ test_getopts -a foo -b
+0:one option, two operands, leading hyphen
+>a
+
+ test_getopts -ab
+0:two options, single argument
+>a b
+
+ test_getopts -a -b
+0:two options, separate arguments
+>a b
+
+ test_getopts -a -b +a
+0:three options, + variant
+>a b +a
+
+ test_getopts -cx
+0:one option with value, single argument
+>c
+
+ test_getopts +cx
+0:one option with value, single argument, + variant
+>+c
+
+ test_getopts -c x
+0:one option with value, separate arguments
+>c
+
+ test_getopts -acx
+0:two options, one with value, single argument
+>a c
+
+ test_getopts -ac x
+0:two options, one with value, separate arguments
+>a c
+
+ test_getopts -c
+1:one option missing value
+>test_getopts:3: argument expected after -c option
+
+ test_getopts +c
+1:one option missing value, + variant
+>test_getopts:3: argument expected after +c option
+
+ test_getopts -x
+1:one illegal option
+>test_getopts:3: bad option: -x
+
+ test_getopts +x
+1:one illegal option, + variant
+>test_getopts:3: bad option: +x
Messages sorted by:
Reverse Date,
Date,
Thread,
Author