skip some skippable tests (#3102)

* tests: consolidate redundant, duplicated helper code

These functions currently exist in a sourced shell library, but there is
an identical copy of them in a single test file. Get rid of this
duplicate definition.

* tests: mark some tests as skipped if bc is not installed

`exit 77` is the GNU exitcode protocol for tests that cannot be run
because their prerequisites are not available. If `bc` is not installed,
and it often isn't, the test can be short-circuited instead of failing;
meson will report them in "warning yellow".

* tests: mark some tests as skipped if support is not compiled

Not all test cases can be cleanly marked as skipped -- sometimes,
multiple things are checked, and having one be unavailable should not
mean skipping all tests.

But in a couple cases, a test file only tests one thing, and that may be
skipped. In such cases, it can be semantically indicated in the test
harness report collection, that a skip occurred.
This commit is contained in:
Eli Schwartz 2022-10-19 13:13:48 -04:00 committed by GitHub
parent eb4b21eec2
commit e73f003d33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 26 deletions

View File

@ -7,32 +7,6 @@
. ./variables.sh . ./variables.sh
# is a difference beyond a threshold? return 0 (meaning all ok) or 1 (meaning
# error, or outside threshold)
#
# use bc since bash does not support fp math
break_threshold() {
diff=$1
threshold=$2
return $(echo "$diff <= $threshold" | bc -l)
}
# subtract, look for max difference less than a threshold
test_difference() {
before=$1
after=$2
threshold=$3
$vips subtract $before $after $tmp/difference.v
$vips abs $tmp/difference.v $tmp/abs.v
dif=$($vips max $tmp/abs.v)
if break_threshold $dif $threshold; then
echo "difference is $dif"
exit 1
fi
}
test_rotate() { test_rotate() {
im=$1 im=$1
inter=$2 inter=$2

View File

@ -12,4 +12,6 @@ if test_supported jpegload_source; then
# test max difference < 10 # test max difference < 10
test_difference $image $tmp/x.png 10 test_difference $image $tmp/x.png 10
else
exit 77
fi fi

View File

@ -14,4 +14,6 @@ if test_supported tiffload; then
-1 -1 -1 -1 -1 -1
EOF EOF
VIPS_STALL=1 $vips conv $tmp/x.tif $tmp/x2.tif $tmp/mask.con VIPS_STALL=1 $vips conv $tmp/x.tif $tmp/x2.tif $tmp/mask.con
else
exit 77
fi fi

View File

@ -32,9 +32,14 @@ test_supported() {
# is a difference beyond a threshold? return 0 (meaning all ok) or 1 (meaning # is a difference beyond a threshold? return 0 (meaning all ok) or 1 (meaning
# error, or outside threshold) # error, or outside threshold)
#
# use bc since bash does not support fp math
break_threshold() { break_threshold() {
diff=$1 diff=$1
threshold=$2 threshold=$2
if ! command -v bc >/dev/null; then
exit 77
fi
return $(echo "$diff <= $threshold" | bc -l) return $(echo "$diff <= $threshold" | bc -l)
} }