1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
# -*- shell-script -*-
# Copyright 2022 Ian Jackson and contributors to dkim-rotate
# SPDX-License-Identifier: GPL-3.0-or-later
# There is NO WARRANTY.
set -o pipefail
tname="${0##*/}"
mkdir -p ${AUTOPKGTEST_TMP:=tmp}
tmp=${AUTOPKGTEST_TMP}/$tname
rm -rf "$tmp"
mkdir $tmp $tmp/var $tmp/etc
tmp_abs=$(realpath -s $tmp)
>$tmp/got-selector
allow_stall=false
instance_var_dir=$tmp/var
cat example.zone - <<END >$tmp/etc/test.zone
; settings used for testing:
! dns_reload true
! instance_var_dir $tmp/var
! mta_group -
! pub_url file://$tmp_abs/var/pub
END
dkim_rotate="${TEST_DKIM_ROTATE-./dkim-rotate} --etc-dir $tmp/etc"
fail () {
echo >&2 "ERROR: test failed: $*"
exit 16
}
invoke () {
day=$1; shift
hour "$@"
}
hour () {
hour=$1; shift
out=$tmp/out.$day.$hour
: "---------- $day $hour $* ----------"
date="now +$day days $hour hours"
date -d "$date" --iso-8601=seconds
faketime "$date" \
$dkim_rotate "$@" 2>&1 | \
tee $out
faketime "$date" \
$dkim_rotate --status 2>&1 | \
tee $out.status
grep -Fv '?' $out >$out.done || test $? = 1
perl -i -pe 's{( +(?:since|not until)) .*}{$1 T}' $out $out.status
}
day () {
day=$1; xmajor=$2
hour +0 ${xmajor:- --major }
egrep '^selector: |^# warning' $tmp/var/exim >$tmp/got-selector.new
set +e
diff -u $tmp/got-selector{,.new}
rc=$?
set -e
test $rc = 1 || { $allow_stall && test $rc = 0; }
mv $tmp/got-selector{.new,}
hour +18 --minor
}
expect-fail () {
local msg="$1"; shift
exec 3>"$tmp/stderr"
set +e
( set -e; "$@"; ) >&3 2>&3
rc=$?
set -e
cat "$tmp/stderr"
test $rc != 0 || fail "command unexpected succeeded!"
grep -q -P -e "$msg" "$tmp/stderr"
}
|