telegram-bot-bash/test/ALL-tests.inc.sh

92 lines
2.5 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
2021-01-02 12:45:09 +00:00
#===============================================================================
#
# FILE: ALL-tests.inc.sh
#
# USAGE: source ALL-tests.inc.sh
#
# DESCRIPTION: must be included from all tests,
# setup bashbot test environment and common test functions
#
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
#
#### $$VERSION$$ v1.45-dev-21-ge67e43d
2021-01-02 12:45:09 +00:00
#===============================================================================
# common variables
export TESTME DIRME TESTDIR LOGFILE REFDIR TESTNAME
TESTME="$(basename "$0")"
DIRME="$(pwd)"
TESTDIR="$1"
LOGFILE="${TESTDIR}/${TESTME}.log"
REFDIR="${TESTME%.sh}"
TESTNAME="${REFDIR//-/ }"
# common filenames
export TOKENFILE ACLFILE COUNTFILE BLOCKEDFILE ADMINFILE DATADIR JSONSHFILE
2020-06-27 16:31:35 +00:00
TOKENFILE="botconfig.jssh"
ACLFILE="botacl"
COUNTFILE="count.jssh"
BLOCKEDFILE="blocked.jssh"
2020-06-27 16:31:35 +00:00
ADMINFILE="botconfig.jssh"
DATADIR="data-bot-bash"
JSONSHFILE="JSON.sh/JSON.sh"
# SUCCESS NOSUCCES
export SUCCESS NOSUCCESS
2019-04-22 08:19:16 +00:00
SUCCESS=" OK"
NOSUCCESS=" FAILED!"
2019-04-21 12:52:55 +00:00
# default input, reference and output files
export INPUTFILE REFFILE OUTPUTFILE INPUTFILELIST
# shellcheck disable=SC2125
INPUTFILELIST="${DIRME}/${REFDIR}/${REFDIR}-"*".input"
2020-06-29 09:13:25 +00:00
OUTPUTFILE="${TESTDIR}/${REFDIR}.out"
2019-04-22 08:19:16 +00:00
INPUTFILE="${DIRME}/${REFDIR}/${REFDIR}.input"
REFFILE="${DIRME}/${REFDIR}/${REFDIR}.result"
2019-04-21 12:52:55 +00:00
2020-12-31 21:43:33 +00:00
# reset ENVIRONMENT
export BASHBOT_URL TESTTOKEN BOTTOKEN BASHBOT_HOME BASHBOT_VAR BASHBOT_ETC
2020-12-28 21:38:30 +00:00
BOTTOKEN=""
2020-12-31 21:43:33 +00:00
BASHBOT_HOME=""
BASHBOT_VAR=""
BASHBOT_ETC=""
# do not query telegram when testing
2019-05-24 08:47:27 +00:00
BASHBOT_URL="https://my-json-server.typicode.com/topkecleon/telegram-bot-bash/getMe?"
TESTTOKEN="123456789:BASHBOTTESTSCRIPTbashbottestscript_"
2019-05-24 08:47:27 +00:00
2019-04-21 12:52:55 +00:00
# print arrays in reproducible order
print_array() {
local idx t
local arrays=( "${@}" )
for idx in "${arrays[@]}"; do
2021-01-05 11:06:22 +00:00
declare -n temp="${idx}"
2019-04-21 12:52:55 +00:00
for t in "${!temp[@]}"; do
2021-01-05 11:06:22 +00:00
printf '%s:\t%s\t%s\n' "${idx}" "${t}" "${temp[${t}]}"
2019-04-21 12:52:55 +00:00
done | sort
done | grep -v '^USER: 0'
}
2020-06-10 16:07:12 +00:00
compare_sorted() {
local ret=0
sort -d -o "$1.sort" "$1"
sort -d -o "$2.sort" "$2"
diff -c "$1.sort" "$2.sort" || ret=1
[[ "$1" != "${TESTDIR}"* ]] && rm -f "$1.sort"
[[ "$2" != "${TESTDIR}"* ]] && rm -f "$2.sort"
2021-01-05 11:06:22 +00:00
return "${ret}"
2020-06-10 16:07:12 +00:00
}
2019-04-21 12:52:55 +00:00
######
# lets go ...
2021-01-02 12:45:09 +00:00
printf "Running %s ...\n" "${TESTNAME#? }"
printf "............................\n"
[ "${TESTDIR}" = "" ] && printf "%s not called from testsuite, exit" "${NOSUCCESS}" && exit 1
# reset env for test
2019-05-26 19:25:01 +00:00
unset IFS;
export TERM=""