Blame src/test/test.sh

Packit bbb0ff
#!/bin/bash
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
#
Packit bbb0ff
#   Unit testing library for BeakerLib
Packit bbb0ff
#   Author: Ales Zelinka <azelinka@redhat.com>
Packit bbb0ff
#   Author: Petr Splichal <psplicha@redhat.com>
Packit bbb0ff
#
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
#
Packit bbb0ff
#   Copyright (c) 2010 Red Hat, Inc. All rights reserved.
Packit bbb0ff
#
Packit bbb0ff
#   This copyrighted material is made available to anyone wishing
Packit bbb0ff
#   to use, modify, copy, or redistribute it subject to the terms
Packit bbb0ff
#   and conditions of the GNU General Public License version 2.
Packit bbb0ff
#
Packit bbb0ff
#   This program is distributed in the hope that it will be
Packit bbb0ff
#   useful, but WITHOUT ANY WARRANTY; without even the implied
Packit bbb0ff
#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
Packit bbb0ff
#   PURPOSE. See the GNU General Public License for more details.
Packit bbb0ff
#
Packit bbb0ff
#   You should have received a copy of the GNU General Public
Packit bbb0ff
#   License along with this program; if not, write to the Free
Packit bbb0ff
#   Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Packit bbb0ff
#   Boston, MA 02110-1301, USA.
Packit bbb0ff
#
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
#
Packit bbb0ff
#   This is a simple unit testing library for BeakerLib.
Packit bbb0ff
#   Have a look at the README file to learn more about it.
Packit bbb0ff
Packit bbb0ff
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
#   Global variables
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
Packit bbb0ff
TotalFailed="0"
Packit bbb0ff
TotalPassed="0"
Packit bbb0ff
FileList=""
Packit bbb0ff
TestList=""
Packit bbb0ff
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
#   assertLog comment [result] --- log a comment (with optional result)
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
Packit bbb0ff
assertLog() {
Packit bbb0ff
    local comment="$1"
Packit bbb0ff
    local result="${2:-INFO}"
Packit bbb0ff
Packit bbb0ff
    # colorify known results if run on terminal
Packit bbb0ff
    if [ -t 1 ]; then
Packit bbb0ff
        case $result in
Packit bbb0ff
            INFO) result="\033[0;34mINFO\033[0m";;
Packit bbb0ff
            PASS) result="\033[0;32mPASS\033[0m";;
Packit bbb0ff
            FAIL) result="\033[0;31mFAIL\033[0m";;
Packit bbb0ff
            WARN) result="\033[0;33mWARN\033[0m";;
Packit bbb0ff
            SKIP) result="\033[0;37mSKIP\033[0m"
Packit bbb0ff
                  ((__INTERNAL_ASSERT_SKIPPED++))
Packit bbb0ff
                  ((TotalSkipped++))
Packit bbb0ff
                ;;
Packit bbb0ff
        esac
Packit bbb0ff
    fi
Packit bbb0ff
Packit bbb0ff
    # echo!
Packit bbb0ff
    echo -e " [ $result ] $comment"
Packit bbb0ff
}
Packit bbb0ff
Packit bbb0ff
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
#   assertRun command [status] [comment] --- run command, check status, log
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
Packit bbb0ff
assertRun() {
Packit bbb0ff
    local command="$1"
Packit bbb0ff
    local expected="${2:-0}"
Packit bbb0ff
    local comment="${3:-Running $command}"
Packit bbb0ff
Packit bbb0ff
    # no output unless in debug mode
Packit bbb0ff
    if [ "$DEBUG" == "1" ]; then
Packit bbb0ff
        eval "$command"
Packit bbb0ff
    else
Packit bbb0ff
        eval "$command" &> /dev/null
Packit bbb0ff
    fi
Packit bbb0ff
    local status=$?
Packit bbb0ff
Packit bbb0ff
    # check status
Packit bbb0ff
    if [[ "$status" =~ ^$expected$ ]]; then
Packit bbb0ff
        assertLog "$comment" 'PASS'
Packit bbb0ff
        ((__INTERNAL_ASSERT_PASSED++))
Packit bbb0ff
        ((TotalPassed++))
Packit bbb0ff
    else
Packit bbb0ff
        assertLog "$comment" 'FAIL'
Packit bbb0ff
        ((__INTERNAL_ASSERT_FAILED++))
Packit bbb0ff
        ((TotalFailed++))
Packit bbb0ff
        [ "$DEBUG" == "1" ] && assertLog "Expected $expected, got $status"
Packit bbb0ff
    fi
Packit bbb0ff
}
Packit bbb0ff
Packit bbb0ff
silentIfNotDebug() {
Packit bbb0ff
    local command="$1"
Packit bbb0ff
    if [ "$DEBUG" == "1" ]
Packit bbb0ff
    then
Packit bbb0ff
      eval "$command"
Packit bbb0ff
    else
Packit bbb0ff
      eval "$command" &> /dev/null
Packit bbb0ff
    fi
Packit bbb0ff
}
Packit bbb0ff
Packit bbb0ff
journalReset() {
Packit bbb0ff
  rm -f $__INTERNAL___INTERNAL_BEAKERLIB_JOURNAL $__INTERNAL___INTERNAL_BEAKERLIB_METAFILE $__INTERNAL___INTERNAL_BEAKERLIB_JOURNAL_TXT $__INTERNAL___INTERNAL_BEAKERLIB_JOURNAL_COLORED $__INTERNAL_PRESISTENT_DATA
Packit bbb0ff
  [ -e "$BEAKERLIB_DIR" ] && ( chmod -R 777 $BEAKERLIB_DIR ; rm -rf $BEAKERLIB_DIR; )
Packit bbb0ff
  unset __INTERNAL_RPM_ASSERTED_PACKAGES
Packit bbb0ff
  silentIfNotDebug 'rlJournalStart'
Packit bbb0ff
}
Packit bbb0ff
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
#   assertStart name --- start an assert phase
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
Packit bbb0ff
assertStart() {
Packit bbb0ff
    local phase="$1"
Packit bbb0ff
    echo
Packit bbb0ff
    assertLog "Testing $phase"
Packit bbb0ff
    __INTERNAL_ASSERT_PHASE="$phase"
Packit bbb0ff
    __INTERNAL_ASSERT_PASSED="0"
Packit bbb0ff
    __INTERNAL_ASSERT_FAILED="0"
Packit bbb0ff
    __INTERNAL_ASSERT_SKIPPED="0"
Packit bbb0ff
}
Packit bbb0ff
Packit bbb0ff
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
#   assertEnd --- short phase summary (returns number of failed asserts)
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
Packit bbb0ff
assertEnd() {
Packit bbb0ff
    local failed="$__INTERNAL_ASSERT_FAILED"
Packit bbb0ff
    local passed="$__INTERNAL_ASSERT_PASSED"
Packit bbb0ff
    local skipped="$__INTERNAL_ASSERT_SKIPPED"
Packit bbb0ff
    local name="$__INTERNAL_ASSERT_PHASE"
Packit bbb0ff
Packit bbb0ff
    if [ "$failed" -gt "0" ]; then
Packit bbb0ff
        assertLog "Testing $name finished: $passed passed, $failed failed, $skipped skipped" "FAIL"
Packit bbb0ff
    elif [ "$passed" -gt "0" ]; then
Packit bbb0ff
        assertLog "Testing $name finished: $passed passed, $failed failed, $skipped skipped" "PASS"
Packit bbb0ff
    else
Packit bbb0ff
        assertLog "Testing $name finished: No assserts run" "WARN"
Packit bbb0ff
    fi
Packit bbb0ff
Packit bbb0ff
    printf "%i:%i:%i\n" $__INTERNAL_ASSERT_PASSED $__INTERNAL_ASSERT_FAILED $__INTERNAL_ASSERT_SKIPPED>> $SCOREFILE
Packit bbb0ff
}
Packit bbb0ff
Packit bbb0ff
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
#   assertTrue comment command --- check that command succeeded
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
Packit bbb0ff
assertTrue() {
Packit bbb0ff
    local comment="$1"
Packit bbb0ff
    local command="$2"
Packit bbb0ff
Packit bbb0ff
    assertRun "$command" 0 "$comment"
Packit bbb0ff
}
Packit bbb0ff
Packit bbb0ff
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
#   assertFalse comment command --- check that command failed
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
Packit bbb0ff
assertFalse() {
Packit bbb0ff
    local comment="$1"
Packit bbb0ff
    local command="$2"
Packit bbb0ff
    local expects="${3:-1}"
Packit bbb0ff
Packit bbb0ff
    assertRun "$command" "$expects" "$comment"
Packit bbb0ff
}
Packit bbb0ff
Packit bbb0ff
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
#   assertGoodBad command good bad --- check for good/bad asserts in journal
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
Packit bbb0ff
assertGoodBad() {
Packit bbb0ff
    local command="$1"
Packit bbb0ff
    local good="$2"
Packit bbb0ff
    local bad="$3"
Packit bbb0ff
Packit bbb0ff
    if [[ -n "$good" ]]; then
Packit bbb0ff
        rm -f $__INTERNAL_BEAKERLIB_JOURNAL $__INTERNAL_BEAKERLIB_METAFILE $__INTERNAL___INTERNAL_BEAKERLIB_JOURNAL_TXT $__INTERNAL___INTERNAL_BEAKERLIB_JOURNAL_COLORED $__INTERNAL_PRESISTENT_DATA; rlJournalStart
Packit bbb0ff
        assertTrue "$good good logged for '$command'" \
Packit bbb0ff
                "rlPhaseStart FAIL; $command; rlPhaseEnd;
Packit bbb0ff
                rlJournalPrintText | egrep 'Assertions: *$good *good, *[0-9]+ *bad'"
Packit bbb0ff
    fi
Packit bbb0ff
Packit bbb0ff
    if [[ -n "$bad" ]]; then
Packit bbb0ff
        rm -f $__INTERNAL_BEAKERLIB_JOURNAL $__INTERNAL_BEAKERLIB_METAFILE $__INTERNAL___INTERNAL_BEAKERLIB_JOURNAL_TXT $__INTERNAL___INTERNAL_BEAKERLIB_JOURNAL_COLORED $__INTERNAL_PRESISTENT_DATA; rlJournalStart
Packit bbb0ff
        assertTrue "$bad bad logged for '$command'" \
Packit bbb0ff
                "rlPhaseStart FAIL; $command; rlPhaseEnd;
Packit bbb0ff
                rlJournalPrintText | egrep 'Assertions: *[0-9]+ *good, *$bad *bad'"
Packit bbb0ff
    fi
Packit bbb0ff
    rm -f $__INTERNAL_BEAKERLIB_JOURNAL $__INTERNAL_BEAKERLIB_METAFILE $__INTERNAL___INTERNAL_BEAKERLIB_JOURNAL_TXT $__INTERNAL___INTERNAL_BEAKERLIB_JOURNAL_COLORED $__INTERNAL_PRESISTENT_DATA
Packit bbb0ff
}
Packit bbb0ff
Packit bbb0ff
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
#   assertParameters assert --- check missing parameters
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
Packit bbb0ff
assertParameters() {
Packit bbb0ff
	journalReset
Packit bbb0ff
	assertTrue "running '$1' (all parameters) must succeed" \
Packit bbb0ff
	"rlPhaseStart FAIL; $1 ; rlPhaseEnd ;  rlJournalPrintText |grep '1 *good'"
Packit bbb0ff
	local CMD=""
Packit bbb0ff
	for i in $1 ; do
Packit bbb0ff
		CMD="${CMD}${i} "
Packit bbb0ff
		if [ "x$CMD" == "x$1 " ] ; then break ; fi
Packit bbb0ff
		#echo "--$1-- --$CMD--"
Packit bbb0ff
		journalReset
Packit bbb0ff
		assertFalse "running just '$CMD' (missing parameters) must not succeed" \
Packit bbb0ff
	    "rlPhaseStart FAIL; $CMD ; rlPhaseEnd ;  rlJournalPrintText |grep '1 *good'"
Packit bbb0ff
	done
Packit bbb0ff
}
Packit bbb0ff
Packit bbb0ff
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
#   Fake rhts-report-result
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
Packit bbb0ff
rhts-report-result(){
Packit bbb0ff
  echo -e "ANCHOR NAME: $1\nRESULT: $2\nLOGFILE: $3\nSCORE: $4"
Packit bbb0ff
}
Packit bbb0ff
Packit bbb0ff
Packit bbb0ff
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
#   Self test --- run a simple self test if called as 'test.sh test'
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
Packit bbb0ff
if [ "$1" == "test" ]; then
Packit bbb0ff
    assertStart "logging"
Packit bbb0ff
        assertLog "Some comment with a pass" "PASS"
Packit bbb0ff
        assertLog "Some comment with a fail" "FAIL"
Packit bbb0ff
    assertEnd
Packit bbb0ff
Packit bbb0ff
    assertStart "passing asserts"
Packit bbb0ff
        assertRun "true"
Packit bbb0ff
        assertRun "true" 0
Packit bbb0ff
        assertRun "true" 0 "Checking true with assertRun"
Packit bbb0ff
        assertRun "false" 1
Packit bbb0ff
        assertRun "false" 1 "Checking false with assertRun"
Packit bbb0ff
        assertTrue "Checking true with assertTrue" "true"
Packit bbb0ff
        assertFalse "Checking false with assertFalse" "false"
Packit bbb0ff
    assertEnd
Packit bbb0ff
Packit bbb0ff
    assertStart "failing asserts"
Packit bbb0ff
        assertRun "false"
Packit bbb0ff
        assertRun "false" 0
Packit bbb0ff
        assertRun "false" 0 "Checking false with assertRun"
Packit bbb0ff
        assertRun "true" 1
Packit bbb0ff
        assertRun "true" 1 "Checking true with assertRun"
Packit bbb0ff
        assertTrue "Checking false with assertTrue" "false"
Packit bbb0ff
        assertFalse "Checking true with assertFalse" "true"
Packit bbb0ff
    assertEnd
Packit bbb0ff
Packit bbb0ff
    [ $TotalPassed == 7 -a $TotalFailed == 7 ] && exit 0 || exit 1
Packit bbb0ff
fi
Packit bbb0ff
Packit bbb0ff
Packit bbb0ff
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
#   Run the tests
Packit bbb0ff
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit bbb0ff
Packit bbb0ff
# set important variables & start journal
Packit bbb0ff
export BEAKERLIB="$PWD/.."
Packit bbb0ff
export TESTID='123456'
Packit bbb0ff
export TEST='beakerlib-unit-tests'
Packit bbb0ff
. ../beakerlib.sh
Packit bbb0ff
export __INTERNAL_JOURNALIST="$BEAKERLIB/python/journalling.py"
Packit bbb0ff
export OUTPUTFILE=$(mktemp) # no-reboot
Packit bbb0ff
export SCOREFILE=$(mktemp) # no-reboot
Packit bbb0ff
rlJournalStart
Packit bbb0ff
Packit bbb0ff
# check parameters for test list
Packit bbb0ff
for arg in "$@"; do
Packit bbb0ff
    # selected test function
Packit bbb0ff
    if [[ "$arg" =~ 'test_' ]]; then
Packit bbb0ff
        TestList="$TestList $arg"
Packit bbb0ff
    # test file
Packit bbb0ff
    elif [[ "$arg" =~ 'Test.sh' ]]; then
Packit bbb0ff
        FileList="$FileList $arg"
Packit bbb0ff
    else
Packit bbb0ff
        echo "What do you mean by $arg?"
Packit bbb0ff
        exit 1
Packit bbb0ff
    fi
Packit bbb0ff
done
Packit bbb0ff
Packit bbb0ff
# unless test files specified run all available
Packit bbb0ff
[[ -z "$FileList" ]] && FileList="$(ls *Test.sh)"
Packit bbb0ff
Packit bbb0ff
# load all test functions
Packit bbb0ff
for file in $FileList; do
Packit bbb0ff
    . $file || { echo "Could not load $file"; exit 1; }
Packit bbb0ff
done
Packit bbb0ff
Packit bbb0ff
assessFile(){
Packit bbb0ff
    local file="$1"
Packit bbb0ff
    assertStart ${file%Test.sh}
Packit bbb0ff
    for test in $(grep --text -o '^test_[^ (]*' $file); do
Packit bbb0ff
        assertLog "Running $test"
Packit bbb0ff
        silentIfNotDebug "journalReset"
Packit bbb0ff
        $test
Packit bbb0ff
    done
Packit bbb0ff
    assertEnd
Packit bbb0ff
}
Packit bbb0ff
Packit bbb0ff
export TIMEFORMAT="System: %S seconds; User: %U seconds"
Packit bbb0ff
TIMEFILE=$( mktemp -u ) # no-reboot
Packit bbb0ff
# run all tests
Packit bbb0ff
if [[ -z "$TestList" ]]; then
Packit bbb0ff
    for file in $FileList; do
Packit bbb0ff
      (time ( { assessFile $file; } 2>&3 ) ) 3>&2 2>>$TIMEFILE.$( basename $file )
Packit bbb0ff
      OLDTIMEFILE=".$( basename $file)-perf.old"
Packit bbb0ff
      if [ -e $OLDTIMEFILE ]
Packit bbb0ff
      then
Packit bbb0ff
        OLDPERF="$( cat $OLDTIMEFILE )"
Packit bbb0ff
      fi
Packit bbb0ff
      assertLog "Measurement: $( cat $TIMEFILE.$( basename $file ) )"
Packit bbb0ff
      if [ -n "$OLDPERF" ]
Packit bbb0ff
      then
Packit bbb0ff
        assertLog "        Was: $OLDPERF"
Packit bbb0ff
      fi
Packit bbb0ff
    done
Packit bbb0ff
# run selected tests only
Packit bbb0ff
else
Packit bbb0ff
    for test in $TestList; do
Packit bbb0ff
        assertStart "$test"
Packit bbb0ff
        silentIfNotDebug "journalReset"
Packit bbb0ff
        $test
Packit bbb0ff
        assertEnd
Packit bbb0ff
    done
Packit bbb0ff
fi
Packit bbb0ff
Packit bbb0ff
# clean up
Packit bbb0ff
rm -rf $BEAKERLIB_DIR
Packit bbb0ff
Packit bbb0ff
# print summary
Packit bbb0ff
echo
Packit bbb0ff
for file in $( ls ${TIMEFILE}* 2>/dev/null )
Packit bbb0ff
do
Packit bbb0ff
    OLDTIMEFILE=".${file#$TIMEFILE.}-perf.old"
Packit bbb0ff
    assertLog "${file#$TIMEFILE.} performance: $( cat $file )"
Packit bbb0ff
    if [ -e $OLDTIMEFILE ]
Packit bbb0ff
    then
Packit bbb0ff
      assertLog "${file#$TIMEFILE.}   Was:       $( cat $OLDTIMEFILE )"
Packit bbb0ff
    fi
Packit bbb0ff
    cat $file > $OLDTIMEFILE
Packit bbb0ff
done
Packit bbb0ff
Packit bbb0ff
while read line
Packit bbb0ff
do
Packit bbb0ff
  PASS=$( echo $line | cut -d ':' -f 1)
Packit bbb0ff
  FAIL=$( echo $line | cut -d ':' -f 2 )
Packit bbb0ff
  SKIP=$( echo $line | cut -d ':' -f 3 )
Packit bbb0ff
  TotalPassed=$(( $TotalPassed+$PASS ))
Packit bbb0ff
  TotalFailed=$(( $TotalFailed+$FAIL ))
Packit bbb0ff
  TotalSkipped=$(( $TotalSkipped+$SKIP ))
Packit bbb0ff
done < $SCOREFILE
Packit bbb0ff
Packit bbb0ff
rm -rf $TIMEFILE* $SCOREFILE
Packit bbb0ff
Packit bbb0ff
if [ $TotalPassed -gt 0 -a $TotalFailed == 0 ]; then
Packit bbb0ff
    assertLog "Total summary: $TotalPassed passed, $TotalFailed failed, $TotalSkipped skipped\n" "PASS"
Packit bbb0ff
    exit 0
Packit bbb0ff
else
Packit bbb0ff
    assertLog "Total summary: $TotalPassed passed, $TotalFailed failed, $TotalSkipped skipped\n" "FAIL"
Packit bbb0ff
    exit 1
Packit bbb0ff
fi