|
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
|