# Simple test harness infrastructurei for BusyBox # # Copyright 2005 by Rob Landley # # License is GPLv2, see LICENSE in the busybox tarball for full license text. # The "testing" function uses one environment variable: # COMMAND = command to execute # # The function takes five arguments: # $1) Description to display when running command # $2) Command line arguments to command" # $3) Expected result (on stdout)" # $4) Data written to file "input" # $5) Data written to stdin # # 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 if [ -n "$VERBOSE" ] ; then verbose=1 fi if [ -n "$DEBUG" ] ; then debug=1 fi export FAILCOUNT=0 # Helper functions config_is_set () { 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 $? } # The testing function testing () { if [ $# -ne 5 ] then echo "Test $1 has the wrong number of arguments" >&2 exit fi if [ $debug -eq 1 ] ; then set -x fi if [ -n "$_BB_CONFIG_DEP" ] && [ ${force} -eq 0 ] then if ! config_is_set "$_BB_CONFIG_DEP" then echo "SKIPPED: $1" return 0 fi fi echo -ne "$3" > expected echo -ne "$4" > input echo -n -e "$5" | eval "$COMMAND $2" > actual RETVAL=$? cmp expected actual > /dev/null if [ $? -ne 0 ] then ((FAILCOUNT++)) echo "FAIL: $1" if [ $verbose -eq 1 ] then diff -u expected actual fi else echo "PASS: $1" fi rm -f input expected actual if [ $debug -eq 1 ] ; then set +x fi return $RETVAL }