#!/bin/bash # Test driver for EPS files source ./functions.source ( cd "$testdir" ## # what version of exiv2 are we using? exiv2version="`$bin/exiv2 -V | sed -n '1 s,^exiv2 [^ ]* \([^ ]*\).*,\1,p'`" if [ -z "$exiv2version" ]; then echo "Error: Unable to determine Exiv2 version" exit 1 fi if [ ! -d $datadir/eps/ ]; then echo "Error: $datadir/eps/ does not exist" exit 1 fi ## # ensure that no data file is already stamped with the current version for file in $datadir/eps/eps-*.eps.*; do if ! grep "_Exiv2Version_" "$file" >/dev/null ; then echo "Error: $file contains hard-coded Exiv2 version" exit 1 fi done ## # get down to work! for file in $datadir/eps/eps-*.eps; do image="`basename "$file" .eps`" printf "." >&3 echo echo "-----> $image.eps <-----" copyTestFile "eps/$image.eps" "$image.eps" echo echo "Command: exiv2 -u -pa $image.eps" runTest exiv2 -u -pa "$image.eps" exitcode="$?" echo "Exit code: $exitcode" if [ "$exitcode" -ne 0 -a "$exitcode" -ne 253 ] ; then continue fi echo echo "Command: exiv2 -dx $image.eps" runTest exiv2 -dx "$image.eps" exitcode="$?" echo "Exit code: $exitcode" if [ "$exitcode" -eq 0 ] ; then # using perl instead of sed, because on some systems sed adds a line ending at EOF perl -pe "s,_Exiv2Version_,$exiv2version," < "$datadir/eps/$image.eps.delxmp" > "$image.eps.delxmp" if ! diff -q $diffargs "$image.eps.delxmp" "$image.eps" ; then continue fi # Ensure that "exiv2 -ex" won't merge metadata into the # *.exv file generated by a previous run of the test suite. rm -f "$image.exv" echo echo "Command: exiv2 -f -ex $image.eps" runTest exiv2 -f -ex "$image.eps" echo "Exit code: $?" if ! diff -q $diffargs "$datadir/eps/eps-test-delxmp.exv" "$image.exv" ; then continue fi fi echo echo "Restore: $image.eps" copyTestFile "eps/$image.eps" "$image.eps" echo echo "Command: exiv2 -f -eX $image.eps" runTest exiv2 -f -eX "$image.eps" echo "Exit code: $?" diff -q $diffargs "$datadir/eps/$image.xmp" "$image.xmp" # Using "-ix" instead of "-iX" because the latter # executes writeMetadata() twice, making it hard to debug. copyTestFile "eps/eps-test-newxmp.xmp" "$image.exv" echo echo "Command: exiv2 -ix $image.eps" runTest exiv2 -ix "$image.eps" exitcode="$?" echo "Exit code: $exitcode" if [ "$exitcode" -ne 0 ] ; then continue fi # using perl instead of sed, because on some systems sed adds a line ending at EOF perl -pe "s,_Exiv2Version_,$exiv2version," < "$datadir/eps/$image.eps.newxmp" > "$image.eps.newxmp" if ! diff -q $diffargs "$image.eps.newxmp" "$image.eps" ; then continue fi echo echo "Command: (2) exiv2 -ix $image.eps" runTest exiv2 -ix "$image.eps" echo "Exit code: $?" diff -q $diffargs "$image.eps.newxmp" "$image.eps" # Ensure that "exiv2 -ex" won't merge metadata into the # *.exv file generated by a previous run of the test suite. rm -f "$image.exv" echo echo "Command: exiv2 -f -ex $image.eps" runTest exiv2 -f -ex "$image.eps" echo "Exit code: $?" diff -q $diffargs "$datadir/eps/eps-test-newxmp.exv" "$image.exv" done ) 3>&1 > "$testdir/eps-test.out" 2>&1 echo "." # ---------------------------------------------------------------------- # Result if ! diff -q $diffargs "$testdir/$datadir/eps/eps-test.out" "$testdir/eps-test.out" ; then diff -u $diffargs "$testdir/$datadir/eps/eps-test.out" "$testdir/eps-test.out" exit 1 fi echo "All testcases passed." # That's all Folks! ##