diff options
Diffstat (limited to 'testsuite/testing.sh')
-rwxr-xr-x | testsuite/testing.sh | 86 |
1 files changed, 42 insertions, 44 deletions
diff --git a/testsuite/testing.sh b/testsuite/testing.sh index 83727f6..c1002a6 100755 --- a/testsuite/testing.sh +++ b/testsuite/testing.sh @@ -4,10 +4,18 @@ # # License is GPLv2, see LICENSE in the busybox tarball for full license text. -# The "testing" function uses one environment variable: -# COMMAND = command to execute +# This file defines two functions, "testing" and "optionflag" + +# The "testing" function must have the following environment variable set: +# COMMAND = command to execute +# +# The following environment variables may be set to enable optional behavior +# in "testing": +# VERBOSE - Print the diff -u of each failed test case. +# DEBUG - Enable command tracing. +# SKIP - do not perform this test (this is set by "optionflag") # -# The function takes five arguments: +# The "testing" function takes five arguments: # $1) Description to display when running command # $2) Command line arguments to command" # $3) Expected result (on stdout)" @@ -17,39 +25,31 @@ # The exit value of testing is the exit value of the command it ran. # # The environment variable "FAILCOUNT" contains a cumulative total of the -# - -verbose=0 -debug=0 -force=0 -for x in "$@" ; do - case "$x" in - -v|--verbose) verbose=1; shift;; - -d|--debug) debug=1; shift;; - -f|--force) force=1; shift;; - --) break;; - -*) echo "Unknown option '$x'"; exit 1;; - *) break;; - esac -done +# number of failed tests. -if [ -n "$VERBOSE" ] ; then - verbose=1 -fi -if [ -n "$DEBUG" ] ; then - debug=1 -fi +# The "optional" function is used to skip certain tests, ala: +# optionflag CONFIG_FEATURE_THINGY +# +# The "optional" function checks the environment variable "OPTIONFLAGS", +# which is either empty (in which case it always clears SKIP) or +# else contains a colon-separated list of features (in which case the function +# clears SKIP if the flag was found, or sets it to 1 if the flag was not found). export FAILCOUNT=0 +export SKIP= # Helper functions -config_is_set () +optional() { - local uc_what=$(echo ${1?} | tr a-z A-Z) - grep -q "^[ ]*CONFIG_${uc_what}" ${bindir:-..}/.config || \ - grep -q "^[ ]*BB_CONFIG_${uc_what}" ${bindir:-..}/.config - return $? + option="$OPTIONFLAGS" | egrep "(^|:)$1(:|\$)" + # Not set? + if [[ -z "$1" || -z "$OPTIONFLAGS" || ${#option} -ne 0 ]] + then + SKIP="" + return + fi + SKIP=1 } # The testing function @@ -62,17 +62,14 @@ testing () exit fi - if [ $debug -eq 1 ] ; then + if [ -n "$DEBUG" ] ; then set -x fi - if [ -n "$_BB_CONFIG_DEP" ] && [ ${force} -eq 0 ] + if [ -n "$SKIP" ] then - if ! config_is_set "$_BB_CONFIG_DEP" - then - echo "SKIPPED: $1" - return 0 - fi + echo "SKIPPED: $1" + return 0 fi echo -ne "$3" > expected @@ -83,18 +80,19 @@ testing () cmp expected actual > /dev/null if [ $? -ne 0 ] then - ((FAILCOUNT++)) - echo "FAIL: $1" - if [ $verbose -eq 1 ] - then - diff -u expected actual - fi + FAILCOUNT=$[$FAILCOUNT+1] + echo "FAIL: $1" + if [ -n "$VERBOSE" ] + then + diff -u expected actual + fi else - echo "PASS: $1" + echo "PASS: $1" fi rm -f input expected actual - if [ $debug -eq 1 ] ; then + if [ -n "$DEBUG" ] + then set +x fi |