]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Remove the requirement for GNU getopt and parse long options using getopts
authorOndřej Surý <ondrej@isc.org>
Fri, 24 Apr 2020 11:34:40 +0000 (13:34 +0200)
committerOndřej Surý <ondrej@isc.org>
Fri, 24 Apr 2020 14:11:20 +0000 (16:11 +0200)
bin/tests/system/system-test-driver.sh.in

index 6ad8380643a49ebc89e3917b9a66bfe490260900..edffd7be229ceeddc2b84b616510f48bc6b280ff 100644 (file)
@@ -9,21 +9,6 @@ usage() {
     echo "$0 --test-name=NAME --log-file=PATH.log --trs-file=PATH.trs --color-tests={yes|no} --expect-failure={yes|no} --enable-hard-errors={yes|no}"
 }
 
-#
-# This requires GNU getopt
-#
-getopt --test >/dev/null
-if [ "$?" -ne 4 ]; then
-    echo "fatal: GNU getopt is required"
-    exit 1
-fi
-
-OPTS=$(getopt --shell sh --name "$(basename "$0")" --options '' --longoptions test-name:,log-file:,trs-file:,color-tests:,expect-failure:,enable-hard-errors: -- "$@")
-
-if [ "$?" -ne 0 ] ; then echo "Failed parsing options." >&2 ; exit 1 ; fi
-
-eval set -- "$OPTS"
-
 TEST_NAME=
 LOG_FILE=
 TRS_FILE=
@@ -31,18 +16,23 @@ COLOR_TESTS=yes
 EXPECT_FAILURE=no
 HARD_ERRORS=yes
 
-while true; do
-    case "$1" in
-       --test-name ) TEST_NAME="$2"; shift; shift ;;
-       --log-file ) LOG_FILE="$2"; shift; shift ;;
-       --trs-file ) TRS_FILE="$2"; shift; shift ;;
-       --color-tests ) COLOR_TESTS="$2"; shift; shift ;;
-       --expect-failure ) EXPECT_FAILURE="$2"; shift; shift ;;
-       --hard-errors ) HARD_ERRORS="$2"; shift; shift ;;
-       -- ) shift; break ;;
-       *) break ;;
-    esac
+while getopts -: OPT; do
+       if [ "$OPT" = "-" ] && [ -n "$OPTARG" ]; then
+               OPT="${OPTARG%%=*}"
+               OPTARG="${OPTARG#$OPT}"
+               OPTARG="${OPTARG#=}"
+       fi
+       case "$OPT" in
+               test-name) TEST_NAME="$OPTARG" ;;
+               log-file) LOG_FILE="$OPTARG" ;;
+               trs-file) TRS_FILE="$OPTARG" ;;
+               color-tests) COLOR_TESTS="$OPTARG" ;;
+               expect-failure) EXPECT_FAILURE="$OPTARG" ;;
+               hard-errors) HARD_ERRORS="$OPTARG" ;;
+               *) break ;;
+       esac
 done
+shift $((OPTIND-1))
 
 if [ -z "$1" ]; then
     echo "fatal: test name required"