File: lib

package info (click to toggle)
dkim-rotate 1.1
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 196 kB
  • sloc: perl: 832; sh: 324; makefile: 55
file content (89 lines) | stat: -rw-r--r-- 1,761 bytes parent folder | download
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"
}