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 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
#!/bin/bash
set -e
. tests/lib-core
. tests/lib-restricts
mode=$1
test-begin- () {
whynots=''
}
restriction- () {
set +e
whynot=$(t-restriction-$r)
rc=$?
whynot="${whynot//
/ / }"
set -e
case "$rc.$whynot" in
0.) ;;
1.?*) whynots="$whynots${whynots:+; }$whynot" ;;
*) fail "restriction $r for $t gave $rc $whynot !"
esac
}
dependencies- () {
:
}
test-done- () {
case "$whynots" in
'') echo $t ;;
?*) echo >&2 "SKIP $t $whynots" ;;
esac
}
finish- () {
:
}
test-begin-gencontrol () {
restrictions=''
dependencies=''
}
restriction-gencontrol () {
restrictions+=" $r"
}
dependencies-gencontrol () {
dependencies+=", $deps"
}
test-done-gencontrol () {
stanza=$(
add_Depends="$dependencies" \
perl <debian/tests/control.in -wpe '
if (/^(\w+):/) {
my $h = $1;
s{$}{ $ENV{"add_$h"} // "" }e;
}
'
case "$restrictions" in
?*) echo "Restrictions:$restrictions" ;;
esac
)
key=$(printf "%s" "$stanza" | sha256sum)
key=${key%% *}
eval "
stanza_$key=\"\$stanza\"
tests_$key+=\" \${t#tests/tests/}\"
"
keys=" ${keys/ $key /}"
keys+=" $key "
}
finish-gencontrol () {
for key in $keys; do
eval "
stanza=\$stanza_$key
tests=\$tests_$key
"
printf "Tests:%s\n%s\n\n" "$tests" "$stanza"
done
}
seddery () {
local seddery=$1
sed <$t -n '
20q;
/^: t-enumerate-tests-end$/q;
'"$seddery"'
'
}
for t in $(run-parts --list tests/tests); do
test-begin-$mode
for r in $(seddery 's/^t-restrict //p'); do
restriction-$mode
done
for deps in $(seddery 's/^t-dependencies //p'); do
dependencies-$mode
done
test-done-$mode
done
finish-$mode
|