| Index: third_party/xdg-utils/tests/include/testfuncs.sh
|
| ===================================================================
|
| --- third_party/xdg-utils/tests/include/testfuncs.sh (revision 0)
|
| +++ third_party/xdg-utils/tests/include/testfuncs.sh (revision 0)
|
| @@ -0,0 +1,138 @@
|
| +verify_test_context() {
|
| + if [ -z "$TEST_NAME" -a ! "$USING_TET" ]; then
|
| + echo "A test context must be established with 'test_start <name>'!"
|
| + exit 255
|
| + fi
|
| +}
|
| +
|
| +## record the test a name.
|
| +test_start () {
|
| +
|
| + TEST_NAME="$*"
|
| + verify_test_context
|
| + TEST_STATUS=PASS
|
| +
|
| + if [ $USING_TET ]; then
|
| + tet_infoline $TEST_NAME
|
| + FAIL=N
|
| + else
|
| + echo -n "[`date`] $TEST_NAME: "
|
| + fi
|
| +
|
| +}
|
| +
|
| +test_infoline() {
|
| + verify_test_context
|
| + FAIL_MESSAGE="$FAIL_MESSAGE\n$*"
|
| + if [ "$USING_TET" ] ; then
|
| + tet_infoline $*
|
| + fi
|
| +}
|
| +
|
| +test_fail() {
|
| + FAIL=Y
|
| + TEST_STATUS=FAIL
|
| + test_infoline $*
|
| +}
|
| +
|
| +## provide a nice way to document the test purpose
|
| +test_purpose() {
|
| + verify_test_context
|
| + # TODO: generate a manpage or something.
|
| +}
|
| +test_note() {
|
| + #verify_test_context
|
| + # TODO: generate even more docs.
|
| + tmp=1
|
| +}
|
| +
|
| +## Used for setup/dependency verification.
|
| +test_init() {
|
| + verify_test_context
|
| +}
|
| +
|
| +test_status() {
|
| + TEST_STATUS="$1"
|
| + test_infoline "$2"
|
| +}
|
| +
|
| +## Called after test_init()
|
| +test_procedure() {
|
| + verify_test_context
|
| + ## Make sure nothing screwed up in initilization
|
| + if [ "$TEST_STATUS" != "PASS" ]; then
|
| + # Something failed before we could get to the test.
|
| + FAIL=N
|
| + test_result NORESULT "Initilization failed!"
|
| + fi
|
| +}
|
| +
|
| +## Must be within test_procedure
|
| +test_failoverride() {
|
| + STAT=${1-WARN}
|
| + if [ "$TEST_STATUS" == FAIL ] ; then
|
| + FAIL=N
|
| + test_status "$STAT"
|
| + fi
|
| +}
|
| +
|
| +## Report the test's result.
|
| +test_result() {
|
| + verify_test_context
|
| +
|
| + # Set status appropriately
|
| + if [ ! -z "$1" ]; then
|
| + TEST_STATUS=$1
|
| + # account for TET
|
| + if [ "$TEST_STATUS" = "FAIL" ] ; then
|
| + FAIL=Y
|
| + fi
|
| + fi
|
| + # if we have a message, save it
|
| + if [ ! -z "$2" ]; then
|
| + test_infoline $2
|
| + fi
|
| + if [ "$USING_TET" ]; then
|
| + tet_result $TEST_STATUS
|
| + fi
|
| + # not using tet, so print nice explanation
|
| +
|
| + [ -z "$USING_TET" ] && echo -n "$TEST_STATUS"
|
| +
|
| + ## Result codes MUST agree with tet_codes
|
| + ## for LSB/tet integration.
|
| + case "$TEST_STATUS" in
|
| + PASS ) RESULT=0
|
| + ;;
|
| + FAIL ) RESULT=1
|
| + [ -z "$USING_TET" ] && echo -ne " $FAIL_MESSAGE"
|
| + ;;
|
| + UNTESTED ) RESULT=5
|
| + [ -z "$USING_TET" ] && echo -ne " $FAIL_MESSAGE"
|
| + ;;
|
| + NORESULT ) RESULT=7
|
| + [ -z "$USING_TET" ] && echo -ne " $FAIL_MESSAGE"
|
| + ;;
|
| + WARN ) RESULT=10
|
| + [ -z "$USING_TET" ] && echo -ne " $FAIL_MESSAGE"
|
| + ;;
|
| + *) RESULT=1
|
| + [ -z "$USING_TET" ] && echo -ne " - UNKNOWN STATUS\n$FAIL_MESSAGE"
|
| + ;;
|
| + esac
|
| + #fi
|
| + [ -z "$USING_TET" ] && echo ""
|
| + exit "$RESULT"
|
| +}
|
| +
|
| +infofile() # write file to journal using tet_infoline
|
| +{
|
| + # $1 is file name, $2 is prefix for tet_infoline
|
| +
|
| + prefix="$2"
|
| + while read line
|
| + do
|
| + test_infoline "$prefix$line"
|
| + done < "$1"
|
| +}
|
| +
|
|
|