Extremely basic integration of wvtest for testing.
And move test scripts into t/ subdir to keep things clean. As part of that, make sure redo adds itself to the PATH on startup so that subscripts can find it.
This commit is contained in:
parent
ae5b71fbc1
commit
07d3e3b13c
14 changed files with 342 additions and 5 deletions
134
wvtest.sh
Normal file
134
wvtest.sh
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
#
|
||||
# Include this file in your shell script by using:
|
||||
# #!/bin/sh
|
||||
# . ./wvtest.sh
|
||||
#
|
||||
|
||||
# we don't quote $TEXT in case it contains newlines; newlines
|
||||
# aren't allowed in test output. However, we set -f so that
|
||||
# at least shell glob characters aren't processed.
|
||||
_wvtextclean()
|
||||
{
|
||||
( set -f; echo $* )
|
||||
}
|
||||
|
||||
|
||||
if [ -n "$BASH_VERSION" ]; then
|
||||
_wvfind_caller()
|
||||
{
|
||||
LVL=$1
|
||||
WVCALLER_FILE=${BASH_SOURCE[2]}
|
||||
WVCALLER_LINE=${BASH_LINENO[1]}
|
||||
}
|
||||
else
|
||||
_wvfind_caller()
|
||||
{
|
||||
LVL=$1
|
||||
WVCALLER_FILE="unknown"
|
||||
WVCALLER_LINE=0
|
||||
}
|
||||
fi
|
||||
|
||||
|
||||
_wvcheck()
|
||||
{
|
||||
CODE="$1"
|
||||
TEXT=$(_wvtextclean "$2")
|
||||
OK=ok
|
||||
if [ "$CODE" -ne 0 ]; then
|
||||
OK=FAILED
|
||||
fi
|
||||
echo "! $WVCALLER_FILE:$WVCALLER_LINE $TEXT $OK" >&2
|
||||
if [ "$CODE" -ne 0 ]; then
|
||||
exit $CODE
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
WVPASS()
|
||||
{
|
||||
TEXT="$*"
|
||||
|
||||
_wvfind_caller
|
||||
if "$@"; then
|
||||
_wvcheck 0 "$TEXT"
|
||||
return 0
|
||||
else
|
||||
_wvcheck 1 "$TEXT"
|
||||
# NOTREACHED
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
WVFAIL()
|
||||
{
|
||||
TEXT="$*"
|
||||
|
||||
_wvfind_caller
|
||||
if "$@"; then
|
||||
_wvcheck 1 "NOT($TEXT)"
|
||||
# NOTREACHED
|
||||
return 1
|
||||
else
|
||||
_wvcheck 0 "NOT($TEXT)"
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
_wvgetrv()
|
||||
{
|
||||
( "$@" >&2 )
|
||||
echo -n $?
|
||||
}
|
||||
|
||||
|
||||
WVPASSEQ()
|
||||
{
|
||||
_wvfind_caller
|
||||
_wvcheck $(_wvgetrv [ "$#" -eq 2 ]) "exactly 2 arguments"
|
||||
echo "Comparing:" >&2
|
||||
echo "$1" >&2
|
||||
echo "--" >&2
|
||||
echo "$2" >&2
|
||||
_wvcheck $(_wvgetrv [ "$1" = "$2" ]) "'$1' = '$2'"
|
||||
}
|
||||
|
||||
|
||||
WVPASSNE()
|
||||
{
|
||||
_wvfind_caller
|
||||
_wvcheck $(_wvgetrv [ "$#" -eq 2 ]) "exactly 2 arguments"
|
||||
echo "Comparing:" >&2
|
||||
echo "$1" >&2
|
||||
echo "--" >&2
|
||||
echo "$2" >&2
|
||||
_wvcheck $(_wvgetrv [ "$1" != "$2" ]) "'$1' != '$2'"
|
||||
}
|
||||
|
||||
|
||||
WVPASSRC()
|
||||
{
|
||||
RC=$?
|
||||
_wvfind_caller
|
||||
_wvcheck $(_wvgetrv [ $RC -eq 0 ]) "return code($RC) == 0"
|
||||
}
|
||||
|
||||
|
||||
WVFAILRC()
|
||||
{
|
||||
RC=$?
|
||||
_wvfind_caller
|
||||
_wvcheck $(_wvgetrv [ $RC -ne 0 ]) "return code($RC) != 0"
|
||||
}
|
||||
|
||||
|
||||
WVSTART()
|
||||
{
|
||||
echo >&2
|
||||
_wvfind_caller
|
||||
echo "Testing \"$*\" in $WVCALLER_FILE:" >&2
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue