+++ /dev/null
-#!/bin/sh
-#
-# eval_suite.sh [-h][<args_passed_to_getresults>]
-#
-# CALLS: eval_oneprogram.sh [-h][-lk] <program>
-#
-# RETURNS: Number of failed tests, regardless of how that failure occured
-# or how many failures there were in a given test.
-#
-#
-
-
- USAGE_LONG='
-#
-# HOW TO ENTER A NEW TEST
-#
-# To add a test to the testlist, add a line to the TESTLISTFILE (eval_testlist)
-# using the following format:
-#
-# <#_of_expected_successes> [#]<program> <args>
-#
-# Any white space may be used as separator. If <program> is immediately
-# preceeded by a pound sign (#) that test will be skipped. (No white space
-# allowed after the pound. Eg, "#<program>".)
-#
-#
-# HOW TESTS ARE RUN AND EVALUATED
-#
-# The harness for individual tests is the script "eval_oneprogram.sh".
-# It expects that the test print FAILED when something fails, and SUCCESS
-# when something succeeds. If a test executes properly there should be
-# some SUCCESS strings and NO FAILED strings. If the reason for the
-# success or failure of the test should be printed on the SAME line as the
-# SUCCESS/FAILED string to allow the dianostic to be easilly grepped from
-# the its output.
-#
-# The long form of the output (-l flag) will capture that output which may
-# help to diagnosis the problem. For more information:
-#
-# % eval_oneprogram.sh -h
-#
-#
-# MISSING TESTS ARE NOTED
-#
-# If an executable is found MISSING, a note is printed to that effect
-# and TESTFAILURE is incremented by 1.
-#
-'
-
-#
-# Suggested improvement(s):
-# Have two (or more?) arbitrary script(s) that may be associated
-# with a given test. One could prepare the environment, the other
-# could clean up the environment after running the test. This could
-# help when testing large subsystems that might require legitimately
-# building or changing things such that the testable item may be
-# accessed in the first place (eg). ...
-#
-
-
-#------------------------------------ -o-
-# Usage mess. (No, it works.)
-#
-USAGE="Usage: `basename $0` [-h][<args_for_getresults>]"
-
-usage() { echo; echo $USAGE; cat <<BLIK | sed 's/^#//' | sed '1d' | $PAGER
-$USAGE_LONG
-BLIK
-exit 0
-}
-
-[ "x$1" = "x-h" ] && usage
-
-
-
-#------------------------------------ -o-
-# Globals.
-#
-PROGRAM=
-ARGUMENTS="$*"
-
-TMPFILE=/tmp/eval_suite.sh$$
-
-TESTLISTFILE=eval_testlist
-
-EXPECTEDSUCCESSES=
-TESTFAILURE=0
-
-testname=
-
-success_count=
-failed_count=
-
-#
-# TESTLISTFILE format:
-# <expected_successes> <program> <arg(s)> ...
-# <expected_successes> <program> <arg(s)> ...
-# ...
-#
-TESTLIST="`cat $TESTLISTFILE | sed 's/$/ ===/'`"
-
-
-
-
-
-#------------------------------------ -o-
-# Run all tests in the testlist. For each test do the following:
-#
-# 1) Note whether the test is SKIPPED or MISSING.
-#
-# 2) Run the test; collect the number of FAILED strings from the
-# return value of eval_oneprogram.sh.
-#
-# 3) Count the number of SUCCESSes from the test output.
-#
-# 4) Print the results. If there were no FAILED strings *and* the
-# number of SUCCESS strings is what we expect, simply
-# note that the test passed. Otherwise, cat the output
-# generated by eval_oneprogram.sh and (possibly)
-# print other details.
-#
-set x $TESTLIST
-shift
-
-while [ -n "$1" ] ; do
- #
- # Parse agument stream...
- #
- EXPECTEDSUCCESSES=$1
- shift
-
- PROGRAM=
- while [ "$1" != "===" ] ; do { PROGRAM="$PROGRAM $1" ; shift ; } done
- shift
-
- testname="`echo $PROGRAM | grep '^#' | sed 's/^#//'`"
-
- echo '+==================================-o-===+'
- echo
-
-
-
- #
- # Decide whether to skip the test, if it's mising, else run it.
- #
- [ -n "$testname" ] && { # Skip the test?
- echo "SKIPPING test for \"$testname\"."
- echo
- continue
- }
- [ ! -e "`echo $PROGRAM | awk '{ print $1 }'`" ] && { # Missing test?
- TESTFAILURE=`expr $TESTFAILURE + 1`
-
- echo "MISSING test for \"$PROGRAM\"."
- echo
- continue
- }
-
- echo "TESTING \"$PROGRAM\"..." # Announce test!
-
-
-
- #
- # Run the test and collect the failed_count and success_count.
- #
- eval_oneprogram.sh $ARGUMENTS $PROGRAM >$TMPFILE
- failed_count=$?
-
- success_count=`awk '$(NF-1) == "SUCCESS:" { print $NF; exit }' $TMPFILE`
- [ -z "$success_count" ] && success_count=0
-
-
-
- #
- # Output best-effort results of the test -OR- a fully successful run.
- #
- [ "$failed_count" -eq 0 -a \
- "$success_count" -eq "$EXPECTEDSUCCESSES" ] &&
- {
- echo
- echo $PROGRAM PASSED # Successful, fully, completed
- echo
-
- true
- } || {
- TESTFAILURE=`expr $TESTFAILURE + 1`
-
- echo
- cat $TMPFILE
- echo
-
- [ "$success_count" -ne $EXPECTEDSUCCESSES ] && {
- echo "Got $success_count SUCCESSes"\
- "out of $EXPECTEDSUCCESSES."
- echo
- }
- true
- } # end -- evaluation of and output based upon test success.
-done # endwhile
-
-
-
-
-#------------------------------------ -o-
-# Cleanup, exit.
-#
-rm -f $TMPFILE
-
-exit $TESTFAILURE
-
-
-