Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEthan Sommer <e5ten.arch@gmail.com>2019-11-03 19:45:04 -0500
committerAllan McRae <allan@archlinux.org>2019-11-04 10:55:23 +1000
commit7be75523297875dacfad9083b0663a04bf823a3e (patch)
tree612ce1bb457d4a51e600d0f8635c4eee92fbc8f2 /test
parentf6564377a2b0a0dd6294fb366a3f91a31142e124 (diff)
libmakepkg: add optional argument support to parseopts
Adds a "?" suffix that can be used to indicate that an option's argument is optional. This allows options to have a default behaviour when the user doesn't specify one, e.g.: --color=[when] being able to behave like --color=auto when only --color is passed Options with optional arguments given on the command line will be returned in the form "--opt=optarg" and "-o=optarg". Despite that not being the syntax for passing an argument with a shortopt (trying to pass -o=foo would make -o's argument "=foo"), this is done to allow the caller to split the option and its optarg easily Signed-off-by: Ethan Sommer <e5ten.arch@gmail.com> Reviewed-by: Dave Reisner <dreisner@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'test')
-rwxr-xr-xtest/scripts/parseopts_test.sh12
1 files changed, 9 insertions, 3 deletions
diff --git a/test/scripts/parseopts_test.sh b/test/scripts/parseopts_test.sh
index 9674c6a6..8f1ea1f3 100755
--- a/test/scripts/parseopts_test.sh
+++ b/test/scripts/parseopts_test.sh
@@ -16,12 +16,12 @@ if ! type -t parseopts &>/dev/null; then
fi
# borrow opts from makepkg
-OPT_SHORT="AcdefFghiLmop:rRsV"
+OPT_SHORT="AcdefFghiLmop:rRsVb?"
OPT_LONG=('allsource' 'asroot' 'ignorearch' 'check' 'clean:' 'cleanall' 'nodeps'
'noextract' 'force' 'forcever:' 'geninteg' 'help' 'holdver'
'install' 'key:' 'log' 'nocolor' 'nobuild' 'nocheck' 'noprepare' 'nosign' 'pkg:' 'rmdeps'
'repackage' 'skipinteg' 'sign' 'source' 'syncdeps' 'version' 'config:'
- 'noconfirm' 'noprogressbar')
+ 'noconfirm' 'noprogressbar' 'opt?')
tap_parse() {
local result=$1 tokencount=$2; shift 2
@@ -31,7 +31,7 @@ tap_parse() {
unset OPTRET
}
-tap_plan 50
+tap_plan 54
# usage: tap_parse <expected result> <token count> test-params...
# a failed tap_parse will match only the end of options marker '--'
@@ -111,4 +111,10 @@ tap_parse '--force --' 2 --force
# exact match on possible stem (opt has optarg)
tap_parse '--clean foo --' 3 --clean=foo
+# long opt with empty, non-empty, and no optional arg
+tap_parse '--opt= --opt=foo --opt --' 4 --opt= --opt=foo --opt
+
+# short opt with and without optional arg, and non-option arg
+tap_parse '-b=foo -A -b -- foo' 5 -bfoo -Ab foo
+
tap_finish