mirror of
https://github.com/sheumann/hush.git
synced 2024-08-15 02:29:00 +00:00
COMMAND=sort ./sort.tests So we can compare against non-busybox versions, and possibly our testsuite will be useful to somebody like the Linux Test Project someday. Redid testing.sh to add new command, "optional", to skip tests that require certain features. (use: `optional FEATURE_SORT_BIG`, or `optional ""` to stop skipping.) Note that optional is a NOP if the environment variable "OPTIONFLAGS" is blank, so although we're marking up the tests with busybox specific knowledge, it doesn't interfere with running the tests without busybox. Moved setting the "OPTIONFLAGS" environment variable to runtest. Philosophy: busybox-specific stuff belongs in runtest; both testing.sh and the tests themselves should be as busybox-agnostic as possible. Moved detecting that a command isn't in busybox at all (hence skipping the entire command.tests file) to runtests. Rationale: optional can't currently test for more than one feature at a time, so if we clear anything with optional "" we might perform tests we don't want to. Marked up busybox.tests to know which tests need CAT enabled. Fixed up other tests to be happy with new notation. I suspect egrep should be appended to grep. It's a sub-feature, really...
101 lines
2.3 KiB
Bash
Executable File
101 lines
2.3 KiB
Bash
Executable File
# Simple test harness infrastructurei for BusyBox
|
|
#
|
|
# Copyright 2005 by Rob Landley
|
|
#
|
|
# License is GPLv2, see LICENSE in the busybox tarball for full license text.
|
|
|
|
# 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 "testing" 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
|
|
# number of failed tests.
|
|
|
|
# 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
|
|
|
|
optional()
|
|
{
|
|
option="$OPTIONFLAGS" | egrep "(^|:)$1(:|\$)"
|
|
# Not set?
|
|
if [[ -z "$1" || -z "$OPTIONFLAGS" || ${#option} -ne 0 ]]
|
|
then
|
|
SKIP=""
|
|
return
|
|
fi
|
|
SKIP=1
|
|
}
|
|
|
|
# The testing function
|
|
|
|
testing ()
|
|
{
|
|
if [ $# -ne 5 ]
|
|
then
|
|
echo "Test $1 has the wrong number of arguments" >&2
|
|
exit
|
|
fi
|
|
|
|
if [ -n "$DEBUG" ] ; then
|
|
set -x
|
|
fi
|
|
|
|
if [ -n "$SKIP" ]
|
|
then
|
|
echo "SKIPPED: $1"
|
|
return 0
|
|
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=$[$FAILCOUNT+1]
|
|
echo "FAIL: $1"
|
|
if [ -n "$VERBOSE" ]
|
|
then
|
|
diff -u expected actual
|
|
fi
|
|
else
|
|
echo "PASS: $1"
|
|
fi
|
|
rm -f input expected actual
|
|
|
|
if [ -n "$DEBUG" ]
|
|
then
|
|
set +x
|
|
fi
|
|
|
|
return $RETVAL
|
|
}
|