diff options
Diffstat (limited to 'test/evaltest.sh')
-rwxr-xr-x | test/evaltest.sh | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/test/evaltest.sh b/test/evaltest.sh new file mode 100755 index 0000000..1dd6394 --- /dev/null +++ b/test/evaltest.sh @@ -0,0 +1,113 @@ +#!/bin/bash +# Copyright (C) 2007 Dejan Muhamedagic <dejan@suse.de> +# See COPYING for license information. + +: ${TESTDIR:=testcases} +: ${CRM:=crm} +CRM_NO_REG="$CRM" +CRM="$CRM -R" +export PYTHONUNBUFFERED=1 +export CRMSH_REGRESSION_TEST=1 + +if [ "$1" = prof ]; then + CRM="$CRM -X regtest.profile" +fi + +. ./defaults +. ./crm-interface +. ./descriptions + +resetvars() { + unset args + unset extcheck +} + +# +# special operations squad +# +specopt_setenv() { + eval $rest +} +specopt_ext() { + eval $rest +} +specopt_extcheck() { + extcheck="$rest" + set $extcheck + which "$1" >/dev/null 2>&1 || # a program in the PATH + extcheck="$TESTDIR/$extcheck" # or our script +} +specopt_repeat() { + repeat_limit=$rest +} +specopt() { + cmd=$(echo $cmd | sed 's/%//') # strip leading '%' + echo ".$(echo "$cmd" | tr "[:lower:]" "[:upper:]") $rest" # show what we got + "specopt_$cmd" # do what they asked for +} + +# +# substitute variables in the test line +# +substvars() { + sed " + s/%t/$test_cnt/g + s/%l/$line/g + s/%i/$repeat_cnt/g + " +} + +dotest_session() { + echo -n "." >&3 + test_cnt=$(($test_cnt+1)) + "describe_$cmd" "$*" # show what we are about to do + "crm_$cmd" | # and execute the command + { [ "$extcheck" ] && $extcheck || cat;} +} +dotest_single() { + echo -n "." >&3 + test_cnt=$(($test_cnt+1)) + describe_single "$*" # show what we are about to do + crm_single "$*" | # and execute the command + { [ "$extcheck" ] && $extcheck || cat;} + if [ "$showobj" ]; then + crm_showobj $showobj + fi +} +runtest_session() { + while read line; do + if [ "$line" = . ]; then + break + fi + echo "$line" + done | dotest_session $* +} +runtest_single() { + while [ $repeat_cnt -le $repeat_limit ]; do + dotest_single "$*" + resetvars # unset all variables + repeat_cnt=$(($repeat_cnt+1)) + done + repeat_limit=1 repeat_cnt=1 +} + +# +# run the tests +# +repeat_limit=1 repeat_cnt=1 +line=1 +test_cnt=1 + +crm_setup +crm_mksample +while read cmd rest; do + case "$cmd" in + "") : empty ;; + "#"*) : a comment ;; + "%stop") break ;; + "%"*) specopt ;; + show|showxml|session|filesession) runtest_session $rest ;; + *) runtest_single $cmd $rest ;; + esac + line=$(($line+1)) +done |