blob: 5974d6985f77a5e0070d114406d47f25d2643342 [file] [log] [blame]
#!/bin/sh
# This runs all tests, overriding the default selection used by make test
# There are some tests disabled for even this run for various reasons
# Those tests will show up in the output as being skipped
# This script is intended to be run by the developers of SpamAssassin before
# a release. It might also be useful to downstream package maintainers.
# These tests include the spamd stress test which will attempt to kill running spamd processes
# so this script should not be run on a production server that is running spamd.
# Note that some tests require certain Perl modules to be installed or else they are skipped.
# Install all optional modules on a release build/test machine so all feasable tests are run.
# The root* tests will be skipped because this script will not run as root
# Use sudo make test TEST_FILES="t/root*.t" to run just those tests separately
# All command line arguments passed to this script are passed to the call to prove(1)
if [ "$(id -u)" -eq 0 ]; then echo "Do not run this as root"; exit 1; fi
# Remove -T option from user, because this script always adds it
# Check for a verbose option and pass it to t.rules/run
for a; do
shift
case $a in
-T) taint="$a";;
-v) verbose="$a";;
--verbose) verbose="$a";;
*) set -- "$@" "$a";;
esac
done
# Be lenient if the script was started while in its own directory
if [ -d "../t" ]; then cd ..; fi
if [ ! -f "t/test_dir" ]; then
echo "This must be run from the source tree root directory"
exit 1
fi
if ! command -v prove >/dev/null 2>&1 ; then
echo "Can't find 'prove' command which is usually installed as part of perl"
exit 1
fi
overrideflags="run_long_tests:run_net_tests:run_dcc_tests:run_sql_pref_tests:run_spamd_prefork_stress_test"
overridevalues="1:1:1:1:1"
# force -T on the tests, don't leave it up to the user
prove -T $verbose "$@" t/*.t xt/20_saw_ampersand.t :: --override $overrideflags $overridevalues
# t.rules/run script takes a --verbose option but it is too verbose when used with prove -v
# If you need to see more output from a rule test use t.rules/run --verbose --tests RULENAME
prove -T $verbose t.rules/run