From c7bca0ce004c693cb12747fb351a829a1ab36c05 Mon Sep 17 00:00:00 2001 From: Robin Mills Date: Sun, 11 Sep 2016 15:47:47 +0000 Subject: [PATCH] #1224 crw-test.sh refactored to use test/functions.source, no long reference sample program crwparse and avoid crash in crwimage.cpp --- src/crwimage.cpp | 5 +- test/crw-test.sh | 113 ++++++++++++++++------------------------- test/data/crw-test.out | Bin 29694 -> 10314 bytes test/functions.source | 6 +-- 4 files changed, 51 insertions(+), 73 deletions(-) diff --git a/src/crwimage.cpp b/src/crwimage.cpp index 5d231efc..8059ce77 100644 --- a/src/crwimage.cpp +++ b/src/crwimage.cpp @@ -791,7 +791,10 @@ namespace Exiv2 { assert(rootDirectory == 0x0000); crwDirs.pop(); if (!pRootDir_) pRootDir_ = new CiffDirectory; - if ( pRootDir_) pRootDir_->add(crwDirs, crwTagId)->setValue(buf); + if ( pRootDir_) { + CiffComponent* child = pRootDir_->add(crwDirs, crwTagId); + if ( child ) child->setValue(buf); + } } // CiffHeader::add CiffComponent* CiffComponent::add(CrwDirs& crwDirs, uint16_t crwTagId) diff --git a/test/crw-test.sh b/test/crw-test.sh index e1996f46..ffd98254 100755 --- a/test/crw-test.sh +++ b/test/crw-test.sh @@ -1,75 +1,50 @@ #! /bin/sh # Test driver for CRW file operations -# ---------------------------------------------------------------------- -# Setup -results="./tmp/crw-test.out" -good="./data/crw-test.out" -diffargs="--strip-trailing-cr" -tmpfile=tmp/ttt -touch $tmpfile -diff -q $diffargs $tmpfile $tmpfile 2>/dev/null -if [ $? -ne 0 ] ; then - diffargs="" -fi - -# ---------------------------------------------------------------------- -# Main routine -( -if [ -z "$EXIV2_BINDIR" ] ; then - bin="$VALGRIND ../../bin" -else - bin="$VALGRIND $EXIV2_BINDIR" -fi -cmdfile=cmdfile -crwfile=exiv2-canon-powershot-s40.crw - -cd ./tmp - -# ---------------------------------------------------------------------- -# Testcases: Add and modify tags - -cat > $cmdfile < $cmdfile < $results 2>&1 +source ./functions.source + +( cd "$testdir" + + crwfile=exiv2-canon-powershot-s40.crw + + # ---------------------------------------------------------------------- + # Testcases: Add and modify tags + cmdfile=cmdfile1 + ( echo set Exif.Photo.ColorSpace 65535 + echo set Exif.Canon.OwnerName Different owner + echo set Exif.Canon.FirmwareVersion Whatever version + echo set Exif.Canon.SerialNumber 1 + echo add Exif.Canon.SerialNumber 2 + echo set Exif.Photo.ISOSpeedRatings 155 + echo set Exif.Photo.DateTimeOriginal 2007:11:11 09:10:11 + ) > $cmdfile + + copyTestFile $crwfile + runTest exiv2 -v -pt $crwfile + runTest exiv2 -v -m $cmdfile $crwfile + # runTest crwparse $crwfile + runTest exiv2 -v -pt $crwfile + + # ---------------------------------------------------------------------- + # Testcases: Delete tags + cmdfile=cmdfile2 + ( echo del Exif.Canon.OwnerName + ) > $cmdfile2 + + copyTestFile $crwfile + runTest exiv2 -v -pt $crwfile + runTest exiv2 -v -m $cmdfile $crwfile + # runTest crwparse $crwfile + runTest exiv2 -v -pt $crwfile + +) 3>&1 > $results 2>&1 + +printf "\n" # ---------------------------------------------------------------------- # Evaluate results -diff -q $diffargs $results $good -rc=$? -if [ $rc -eq 0 ] ; then - echo "All testcases passed." -else - diff $diffargs $results $good -fi +cat $results | sed 's/\x0d$//' > $results-stripped +reportTest $results-stripped $good + +# That's all Folks! +## diff --git a/test/data/crw-test.out b/test/data/crw-test.out index c95954285ce1b2049dc6c7dc12455b937b3d8368..6b53da15cd4a5dadfceb99283fd1a869dca3004e 100644 GIT binary patch delta 832 zcmds#OKTHR6o8q@J29j!cHygBuxew?&D=>RX+{zonnsaEA{BLIdoyzMK}He5jSp%=)P9RqErR{fM<0$4-S0i+x{rMZVX;Z!5Z%{ z_{JyT%CQkROP>q}^176$IR@=4GSTwdAXN^>W)Lc1f@~We8Rz14M%{jonF|-852H(%s8}I$eV~b3eQdkHJPP6`pr-or_;3xi$-%qj!c|W4EN>QrGd|zS!A^ zMm_@Pm!|-YS5sAPS**u|hn!WxdT?$0tKZ9j)VvFiWt`3<^w&syVU1gOo(f0cKN%c_ ziO~dHqQ%p*d7Y>_DIlWhIX}_jIBWD)Gahq2?6!5(;ew$VMMsl{ZCXBGRY%lr@>bvJ zyU6Fpd(7~LjpbMWFaDLrzMrUHqzF-bf6S(3X?_rRKv!TOhv2E99?D^&YQIrm;&|7X zA9e*aOkmnPB@wXAvW#5#WR{{;dbPt_Z4Yc#g6GLS@Gzq8RgmQvKH;vzh3B3`{u3E| zj$H6v%!Y`n772)0$^YXBJd5QHAopK)cT5cxidfZPGhU8nR7}{kl7md56rLhkB_00` D%RL-_ literal 29694 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 diff --git a/test/functions.source b/test/functions.source index d406655e..3e3a6305 100644 --- a/test/functions.source +++ b/test/functions.source @@ -407,9 +407,9 @@ copyVideoFiles () fi # http://stackoverflow.com/questions/7442417/how-to-sort-an-array-in-bash - readarray -t sorted < <(printf '%s\0' "${videos[@]}" | sort -z | xargs -0n1) - echo ${videos[*]} - unset videos + # readarray -t sorted < <(printf '%s\0' "${videos[@]}" | sort -z | xargs -0n1) + # echo ${videos[*]} + # unset videos popd 2>/dev/null >/dev/null }