]> git.draconx.ca Git - liblbx.git/blobdiff - tests/util/test-init.sh
tests: Zero out transparent pixels before calculating digest.
[liblbx.git] / tests / util / test-init.sh
index d59b8532177d210c749499384f046e466980f5d4..2c72bf3a2f195b647340bbe8813e482f400c22cb 100644 (file)
@@ -113,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 <<EOF
+$2  $1.px
+EOF
 }
 
 dx_check_pam_md5() {
        if $HAVE_MD5SUM; then
-               command_ok_ "$1" dx_check_pam_md5_ "$1" "$2"
+               if dx_pam_normalize "$1" > "$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
 }