1
0
mirror of https://github.com/mail-in-a-box/mailinabox.git synced 2025-04-05 00:27:25 +00:00
mailinabox/tests/runner.sh
2020-06-02 13:04:16 -04:00

89 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# -*- indent-tabs-mode: t; tab-width: 4; -*-
#
# Runner for test suites
#
# operate from the runner's directory
cd "$(dirname $0)"
# load global functions and variables
. suites/_init.sh
runner_suites=(
ldap-connection
ldap-access
mail-basic
mail-from
mail-aliases
mail-access
management-users
)
usage() {
echo ""
echo "Usage: $(basename $0) [-failfatal] [suite-name ...]"
echo "Valid suite names:"
for runner_suite in ${runner_suites[@]}; do
echo " $runner_suite"
done
echo "If no suite-name(s) given, all suites are run"
echo ""
echo "Options:"
echo " -failfatal The runner will stop if any test fails"
echo " -dumpoutput After all tests have run, dump all failed test output"
echo ""
echo "Output directory: $(dirname $0)/${base_outputdir}"
echo ""
exit 1
}
# process command line
while [ $# -gt 0 ]; do
case "$1" in
-failfatal )
# failure is fatal (via global option, see _init.sh)
FAILURE_IS_FATAL=yes
;;
-dumpoutput )
DUMP_FAILED_TESTS_OUTPUT="yes"
;;
-* )
echo "Invalid argument $1" 1>&2
usage
;;
* )
# run named suite
if array_contains "$1" ${runner_suites[@]}; then
. "suites/$1.sh"
else
echo "Unknown suite '$1'" 1>&2
usage
fi
;;
esac
shift
done
# if no suites specified on command line, run all suites
if [ $OVERALL_COUNT_SUITES -eq 0 ]; then
rm -rf "${base_outputdir}"
for runner_suite in ${runner_suites[@]}; do
. suites/$runner_suite.sh
done
fi
echo ""
echo "Done"
echo "$OVERALL_COUNT tests ($OVERALL_SUCCESSES success/$OVERALL_FAILURES failures) in $OVERALL_COUNT_SUITES test suites"
if [ $OVERALL_FAILURES -gt 0 ]; then
dump_failed_tests_output
exit 1
else
exit 0
fi