mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-09-28 23:11:20 +02:00
99 lines
1.7 KiB
Plaintext
99 lines
1.7 KiB
Plaintext
# 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
|
|
|
|
set -- -x
|
|
OPTIND=1
|
|
while getopts x: opt; do
|
|
echo "$opt,${OPTARG:-Empty}"
|
|
done
|
|
0:missing option-argument (error message mode)
|
|
>?,Empty
|
|
?(eval):3: argument expected after -x option
|
|
|
|
set -- -x
|
|
OPTIND=1
|
|
while getopts :x: opt; do
|
|
echo "$opt,${OPTARG:-Empty}"
|
|
done
|
|
0:missing option-argument (quiet mode)
|
|
>:,x
|