7bfb87fab7
This allows us to invoke dkimpy-milter as "python -m dkimpy_milter dkimpy-milter.conf", which makes running the test suite easier.
68 lines
1.6 KiB
Bash
Executable File
68 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
WORKDIR=$(mktemp -d)
|
|
TESTDIR=$(realpath "$(dirname "$0")")
|
|
DKIMPY_MILTER=${DKIMPY_MILTER:-"$TESTDIR/dkimpy-milter"}
|
|
|
|
cd "$WORKDIR"
|
|
|
|
printf "Testing %s from directory %s\n" "$DKIMPY_MILTER" "$WORKDIR"
|
|
|
|
dknewkey --ktype ed25519 testkey
|
|
cat > signing.conf <<EOF
|
|
Domain example.net
|
|
KeyFileEd25519 testkey.key
|
|
SelectorEd25519 testkey
|
|
Socket unix:signing.sock
|
|
PidFile signing.pid
|
|
Mode s
|
|
UserID $(id --name --user):$(id --name --group)
|
|
EOF
|
|
|
|
cat > verify.conf <<EOF
|
|
Socket unix:verify.sock
|
|
PidFile verify.pid
|
|
Mode v
|
|
DNSOverride $(cat testkey.dns)
|
|
UserID $(id --name --user):$(id --name --group)
|
|
EOF
|
|
|
|
cleanup() {
|
|
echo cleaning up jobs:
|
|
jobs
|
|
if [ -s signing.pid ] && kill -0 "$(cat signing.pid)"; then
|
|
kill "$(cat signing.pid)"
|
|
fi
|
|
if [ -s verify.pid ] && kill -0 "$(cat verify.pid)"; then
|
|
kill "$(cat verify.pid)"
|
|
fi
|
|
wait
|
|
for errdata in signing.stderr verify.stderr; do
|
|
if [ -s "$errdata" ]; then
|
|
printf -- "-> %s:\n" "$errdata"
|
|
cat "$errdata"
|
|
printf -- "-> end %s\n" "$errdata"
|
|
fi
|
|
done
|
|
rm -rf "$WORKDIR"
|
|
}
|
|
|
|
PYTHONPATH="$(dirname "$TESTDIR")" "$DKIMPY_MILTER" signing.conf 2>signing.stderr &
|
|
PYTHONPATH="$(dirname "$TESTDIR")" "$DKIMPY_MILTER" verify.conf 2>verify.stderr &
|
|
trap cleanup EXIT
|
|
|
|
# ugly ugly (how are we supposed to know that the filter is ready?):
|
|
sleep 2
|
|
|
|
# uses miltertest from opendkim:
|
|
for x in ${TESTS:-"$TESTDIR"/*.miltertest}; do
|
|
if ! [ -e "$x" ]; then
|
|
if [ -e "$TESTDIR/$x" ]; then
|
|
x="$TESTDIR/$x"
|
|
fi
|
|
fi
|
|
printf -- "-> running %s...\n" "$x"
|
|
miltertest -s "$x"
|
|
done
|