1
0
mirror of https://blitiri.com.ar/repos/chasquid synced 2026-01-08 17:51:57 +00:00
Files
go-chasquid-smtp/test/t-20-bad_configs/run.sh
Alberto Bertogli 2c02f0d128 test: Make t-20-bad_configs less flaky due to asynchronous logging
The t-20-bad_configs test can sometimes have false positives because
the last line recorded in the log isn't always the one causing the
failure, due to asynchronous logging and in particular in combination
with coverage tests (which alter the os.Exit behaviour subtly).

This patch fixes that by having the tests look at the last 4 lines of
output instead. This is not super pretty, but it should be good enough
to cover for any timing issues that arise in these particular tests.
2023-09-02 14:12:36 +01:00

51 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
set -e
. "$(dirname "$0")/../util/lib.sh"
init
check_hostaliases
mkdir -p .logs
if chasquid --config_dir=doesnotexist > .chasquid-doesnotexist.out 2>&1; then
fail "chasquid should not start without a config"
fi
# Create this empty directory. We can't use a .keep file because that defeats
# the purpose of the test.
mkdir -p c-04-no_cert_dirs/certs/
# Generate certs for the tests that need them.
for i in c-05-no_addrs c-06-bad_maillog c-07-bad_domain_info \
c-08-bad_sts_cache c-09-bad_queue_dir ;
do
CONFDIR=$i/ generate_certs_for testserver
done
for i in c-*; do
if chasquid --config_dir="$i" > ".chasquid-$i.out" 2>&1; then
echo "$i failed; output:"
echo
cat ".chasquid-$i.out"
echo
fail "$i: chasquid should not start with this invalid config"
fi
# Test that they failed as expected, and not by chance/unrelated error.
# Look in the last 4 lines, because the fatal error may not be in the
# very last one due to asynchronous logging.
if ! tail -n 4 ".chasquid-$i.out" \
| grep -q -E "$(cat "$i/.expected-error")"; then
echo "$i failed"
echo "expected last 4 lines to contain:"
echo " '$(cat "$i/.expected-error")'"
echo "got last 4 lines:"
tail -n 4 ".chasquid-$i.out" | sed -e 's/^/ /g'
echo
fail "$i: chasquid did not fail as expected"
fi
done
success