diff options
Diffstat (limited to 'libs/OptParse/test.sh')
-rwxr-xr-x | libs/OptParse/test.sh | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/libs/OptParse/test.sh b/libs/OptParse/test.sh new file mode 100755 index 0000000..a0de60c --- /dev/null +++ b/libs/OptParse/test.sh @@ -0,0 +1,87 @@ +#!/bin/bash +# -*- mode: sh; coding: utf-8; indent-tabs-mode: nil -*- +# vim: set filetype=sh fileencoding=utf-8 expandtab sw=4 sts=4: + +export COLUMNS=80 + +c () { + echo "$(printf "%q " ./testprog "$@")" + local t_stdout_cpp=$(mktemp -t cpp-stdout-optparse.XXXXXXXXXX) + local t_stderr_cpp=$(mktemp -t cpp-stderr-optparse.XXXXXXXXXX) + local t_stdout_pyt=$(mktemp -t pyt-stdout-optparse.XXXXXXXXXX) + local t_stderr_pyt=$(mktemp -t pyt-stderr-optparse.XXXXXXXXXX) + ./testprog "$@" >"$t_stdout_cpp" 2>"$t_stderr_cpp" + status_cpp=$? + ./t/testprog "$@" >"$t_stdout_pyt" 2>"$t_stderr_pyt" + status_pyt=$? + if ! cmp -s "$t_stderr_cpp" "$t_stderr_pyt" ; then + diff -au "$t_stderr_cpp" "$t_stderr_pyt" + exit 1 + fi + rm -f "$t_stderr_cpp" "$t_stderr_pyt" + if ! cmp -s "$t_stdout_cpp" "$t_stdout_pyt" ; then + diff -au "$t_stdout_cpp" "$t_stdout_pyt" + exit 1 + fi + rm -f "$t_stdout_cpp" "$t_stdout_pyt" + if [[ $status_cpp -ne $status_pyt ]] ; then + echo >&2 "status $status_pyt expected, got $status_cpp" + exit 1 + fi +} + +c +c --str # ambiguous option +c -Z # unknown argument +c --argument-does-not-exist +c --version +c -h +c --help +c "foo bar" baz "" +c --clear +c --no-clear +c --clear --no-clear +c --clear --no-clear --clear +c --string "foo bar" +c --string # requires argument +c -x foo +c --clause foo +c --sentence foo +c -k -k -k -k -k +c --verbose +c -s +c --silent +c -v -s +c -n-10 +c -n 300 +c --number=0 +c -H +c -V +c -i-10 +c -i 300 +c --int=0 +# c -i 2.3 # TODO: ignores suffix +c -i no-number +c -f-2.3 +c -f 300 +c --float=0 +c -f no-number +c -c-2.3 +c -c 300 +c --complex=0 +c -c no-number +c -C foo +c --choices baz +c -C wrong-choice +c --choices-list item2 +c --choices-list wrong-item +c -m a -m b +c -m a --more b -m c +c --more-milk --more-milk +c --hidden foo +c -K -K -K +c --string-callback x +c --no-clear foo bar -k -k z -v -n3 "x y" -i 8 -f 3.2 -c 2 +DISABLE_INTERSPERSED_ARGS=1 c -k a -k b +DISABLE_USAGE=1 c --argument-does-not-exist +DISABLE_USAGE=1 c --help |