X-Git-Url: http://git.draconx.ca/gitweb/liblbx.git/blobdiff_plain/955d03ee99a6b932b8b62bd0cbd7f505efddb9a2..d1c92ce9f559ece233cb82425d634bf6484aff2f:/tests/util/test-init.sh diff --git a/tests/util/test-init.sh b/tests/util/test-init.sh index 52625c0..2c72bf3 100644 --- a/tests/util/test-init.sh +++ b/tests/util/test-init.sh @@ -1,6 +1,6 @@ # 2ooM: The Master of Orion II Reverse Engineering Project # Common test suite initialization functions. -# Copyright © 2013 Nick Bowler +# Copyright © 2013-2014 Nick Bowler # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -25,8 +25,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -set -e - test ${test_lib_sourced-no} = yes && return 0 test_lib_sourced=yes @@ -86,11 +84,10 @@ testdata=$srcdir/tests/testdata dx_testname=`expr x"$argv0" : x'.*/\(.*\)\.'` dx_testdir=tests/$dx_testname.dir -dx_cleanup_testdir() -{ +dx_cleanup_testdir() { exitstatus=$1 - cd "$builddir" + cd "$builddir" || return if test "$exitstatus" -eq 0 && test $tap_pass_count_ -eq $tap_count_ then @@ -98,15 +95,17 @@ dx_cleanup_testdir() fi } -dx_create_testdir() -{ - $MKDIR_P "$dx_testdir" +dx_create_testdir_() { + $MKDIR_P "$dx_testdir" || return trap 'dx_cleanup_testdir $?' 0 cd "$dx_testdir" } -dx_pam_header() -{ +dx_create_testdir() { + dx_create_testdir_ || bailout_ "failed to create test directory" +} + +dx_pam_header() { awk 'BEGIN { ret=1 } NR==1 { if (!/^P7$/) exit 1 } /^P7$/,/^ENDHDR$/ { ret=0; if ($2) print $1"="$2 } @@ -114,20 +113,57 @@ dx_pam_header() END { exit ret }' ${1+"$@"} } -dx_check_pam_md5_() { +# Set all transparent pixels in a PAM image to black. This assumes (fine for +# LBX images) that all pixels are either fully-transparent or fully-opaque. +dx_pam_normalize() { dx_pam_header "$1" > "$1.sh" || return - . "./$1.sh" || return + ( . "./$1.sh" || exit + case $TUPLTYPE in + GRAYSCALE_ALPHA) $PAMCHANNEL -infile "$1" 1 > "$1.alpha" ;; + RGB_ALPHA) $PAMCHANNEL -infile "$1" 3 > "$1.alpha" ;; + *) rm -f "$1.alpha" ;; + esac + ) || return + + if test -e "$1.alpha"; then + $PAMARITH -and "$1" "$1.alpha" + else + cat "$1" + fi +} - tail -n +"$ENDHDR" "$1" > "$1.px" || return - echo "$2 $1.px" > "$1.md5" || return - $MD5SUM -c "$1.md5" +dx_check_pam_md5_() { + ( dx_pam_header "$1" > "$1.sh" || exit + . "./$1.sh" || exit + tail -n +"$ENDHDR" "$1" > "$1.px" + ) || return 55 + + $MD5SUM -c < "$1.tmp"; then + mv -f "$1.tmp" "$1" + dx_md5_reliable=true + else + dx_md5_reliable=false + fi + + dx_check_pam_md5_ "$1" "$2" + case $? in + 0) ok_ "$1" ;; + 55) not_ok_ "$1" ;; + *) if $dx_md5_reliable; then + not_ok_ "$1" + else + skip_ -r "netpbm unavailable or broken" "$1" + fi ;; + esac else - skip_ "$1" + skip_ -r "md5sum unavailable or broken" "$1" fi }