Blame test/conversions.sh

Packit Service fb147c
#!/usr/bin/env bash
Packit 01d647
# XMP parser test driver
Packit 01d647
Packit 01d647
# ----------------------------------------------------------------------
Packit 01d647
# Setup
Packit 01d647
source ./functions.source
Packit 01d647
Packit 01d647
# ----------------------------------------------------------------------
Packit 01d647
# Check if xmpparser-test exists
Packit 01d647
if [ $(existsTest xmpparser-test) == 0 ] ; then
Packit 01d647
    echo "xmpparser-test not found. Assuming XMP support is not enabled."
Packit 01d647
    exit 0
Packit 01d647
fi
Packit 01d647
Packit 01d647
(   cd "$testdir"
Packit 01d647
Packit 01d647
    IMG=exiv2-empty.jpg
Packit 01d647
Packit 01d647
    # 1) Convert Exif ImageDescription to XMP x-default langAlt value
Packit 01d647
    echo Testcase 1
Packit 01d647
    echo ==========
Packit 01d647
    copyTestFile $IMG h.jpg
Packit 01d647
    runTest exiv2 -M'set Exif.Image.ImageDescription The Exif image description' h.jpg
Packit 01d647
    rm -f h.xmp
Packit 01d647
    runTest exiv2 -eX h.jpg
Packit 01d647
    runTest exiv2 -px h.xmp
Packit 01d647
    runTest exiv2 -PEkycv h.xmp
Packit 01d647
    runTest exiv2 -pi h.xmp
Packit 01d647
Packit 01d647
    # 2) Convert XMP x-default langAlt value back to Exif ImageDescription
Packit 01d647
    echo
Packit 01d647
    echo Testcase 2
Packit 01d647
    echo ==========
Packit 01d647
    copyTestFile $IMG  i.jpg
Packit 01d647
    copy         h.xmp i.xmp
Packit 01d647
    runTest exiv2 -iX  i.jpg
Packit 01d647
    runTest exiv2 -px  i.jpg
Packit 01d647
    runTest exiv2 -PEkycv i.jpg
Packit 01d647
    runTest exiv2 -pi  i.jpg
Packit 01d647
Packit 01d647
    # 3) Convert XMP single non-x-default langAlt value to Exif ImageDescription
Packit 01d647
    echo
Packit 01d647
    echo Testcase 3
Packit 01d647
    echo ==========
Packit 01d647
    sed s/x-default/de-DE/ i.xmp > j.xmp
Packit 01d647
    copyTestFile $IMG j.jpg
Packit 01d647
    runTest exiv2 -iX j.jpg
Packit 01d647
    runTest exiv2 -px j.jpg
Packit 01d647
    runTest exiv2 -PEkycv j.jpg
Packit 01d647
    runTest exiv2 -pi j.jpg
Packit 01d647
Packit 01d647
    # 4) This shouldn't work: No x-default, more than one language
Packit 01d647
    echo
Packit 01d647
    echo Testcase 4
Packit 01d647
    echo ==========
Packit 01d647
    sed 's,<rdf:li xml:lang="de-DE">The Exif image description</rdf:li>,<rdf:li xml:lang="de-DE">The Exif image description</rdf:li><rdf:li xml:lang="it-IT">Ciao bella</rdf:li>,' j.xmp > k.xmp
Packit 01d647
    copyTestFile $IMG k.jpg
Packit 01d647
    runTest exiv2 -iX k.jpg
Packit 01d647
    runTest exiv2 -px k.jpg
Packit 01d647
    runTest exiv2 -v -PEkycv k.jpg
Packit 01d647
    runTest exiv2 -v -pi k.jpg
Packit 01d647
Packit 01d647
    # 5) Add a default language to the XMP file and convert to Exif and IPTC
Packit 01d647
    echo
Packit 01d647
    echo Testcase 5
Packit 01d647
    echo ==========
Packit 01d647
    copy k.xmp l.xmp
Packit 01d647
    runTest exiv2 -M'set Xmp.dc.description lang="x-default" How to fix this mess' l.xmp
Packit 01d647
    grep x-default l.xmp
Packit 01d647
    copyTestFile $IMG l.jpg
Packit 01d647
    runTest exiv2 -iX l.jpg
Packit Service fb147c
    runTest exiv2 -px -b l.jpg
Packit 01d647
    runTest exiv2 -PEkycv l.jpg
Packit 01d647
    runTest exiv2 -pi l.jpg
Packit 01d647
Packit 01d647
    # 6) Convert an Exif user comment to XMP
Packit 01d647
    echo
Packit 01d647
    echo Testcase 6
Packit 01d647
    echo ==========
Packit 01d647
    copyTestFile $IMG m.jpg
Packit 01d647
    runTest exiv2 -M'set Exif.Photo.UserComment charset=Jis This is a JIS encoded Exif user comment. Or was it?' m.jpg
Packit 01d647
    runTest exiv2 -PEkycv m.jpg
Packit 01d647
    rm -f m.xmp
Packit 01d647
    runTest exiv2 -eX m.jpg
Packit 01d647
    runTest exiv2 -px m.xmp
Packit 01d647
    runTest exiv2 -PEkycv m.xmp
Packit 01d647
    runTest exiv2 -v -pi m.xmp
Packit 01d647
Packit 01d647
    # 7) And back to Exif
Packit 01d647
    echo
Packit 01d647
    echo Testcase 7
Packit 01d647
    echo ==========
Packit 01d647
    copyTestFile $IMG n.jpg
Packit 01d647
    copy m.xmp n.xmp
Packit 01d647
    runTest exiv2 -iX n.jpg
Packit 01d647
    runTest exiv2 -px n.jpg
Packit 01d647
    runTest exiv2 -PEkycv n.jpg
Packit 01d647
    runTest exiv2 -v -pi n.jpg
Packit 01d647
Packit 01d647
    # 8) Convert IPTC keywords to XMP
Packit 01d647
    echo
Packit 01d647
    echo Testcase 8
Packit 01d647
    echo ==========
Packit 01d647
    copyTestFile $IMG o.jpg
Packit 01d647
    runTest exiv2 -M'add Iptc.Application2.Keywords Sex' o.jpg
Packit 01d647
    runTest exiv2 -M'add Iptc.Application2.Keywords Drugs' o.jpg
Packit 01d647
    runTest exiv2 -M"add Iptc.Application2.Keywords Rock'n'roll" o.jpg
Packit 01d647
    runTest exiv2 -pi o.jpg
Packit 01d647
    rm -f o.xmp
Packit 01d647
    runTest exiv2 -eX o.jpg
Packit 01d647
    runTest exiv2 -px o.xmp
Packit 01d647
    runTest exiv2 -v -PEkycv o.xmp
Packit 01d647
    runTest exiv2 -pi o.xmp
Packit 01d647
Packit 01d647
    # 9) And back to IPTC
Packit 01d647
    echo
Packit 01d647
    echo Testcase 9
Packit 01d647
    echo ==========
Packit 01d647
    copyTestFile $IMG p.jpg
Packit 01d647
    copy o.xmp p.xmp
Packit 01d647
    runTest exiv2 -iX p.jpg
Packit 01d647
    runTest exiv2 -px p.jpg
Packit 01d647
    runTest exiv2 -v -PEkycv p.jpg
Packit 01d647
    runTest exiv2 -pi p.jpg
Packit 01d647
Packit 01d647
    # 10) Convert an Exif tag to an XMP text value
Packit 01d647
    echo
Packit 01d647
    echo Testcase 10
Packit 01d647
    echo ===========
Packit 01d647
    copyTestFile $IMG q.jpg
Packit 01d647
    runTest exiv2 -M'set Exif.Image.Software Exiv2' q.jpg
Packit 01d647
    runTest exiv2 -PEkycv q.jpg
Packit 01d647
    rm -f q.xmp
Packit 01d647
    runTest exiv2 -eX q.jpg
Packit 01d647
    runTest exiv2 -px q.xmp
Packit 01d647
    runTest exiv2 -PEkycv q.xmp
Packit 01d647
    runTest exiv2 -v -pi q.xmp
Packit 01d647
Packit 01d647
    # 11) And back to Exif
Packit 01d647
    echo
Packit 01d647
    echo Testcase 11
Packit 01d647
    echo ===========
Packit 01d647
    copyTestFile $IMG r.jpg
Packit 01d647
    copy q.xmp r.xmp
Packit 01d647
    runTest exiv2 -iX r.jpg
Packit 01d647
    runTest exiv2 -px r.jpg
Packit 01d647
    runTest exiv2 -PEkycv r.jpg
Packit 01d647
    runTest exiv2 -v -pi r.jpg
Packit 01d647
Packit 01d647
    # 12) Convert an IPTC dataset to an XMP text value
Packit 01d647
    echo
Packit 01d647
    echo Testcase 12
Packit 01d647
    echo ===========
Packit 01d647
    copyTestFile $IMG s.jpg
Packit 01d647
    runTest exiv2 -M'set Iptc.Application2.SubLocation Kuala Lumpur' s.jpg
Packit 01d647
    runTest exiv2 -pi s.jpg
Packit 01d647
    rm -f s.xmp
Packit 01d647
    runTest exiv2 -eX s.jpg
Packit 01d647
    runTest exiv2 -px s.xmp
Packit 01d647
    runTest exiv2 -v -PEkycv s.xmp
Packit 01d647
    runTest exiv2 -pi s.xmp
Packit 01d647
Packit 01d647
    # 13) And back to IPTC
Packit 01d647
    echo
Packit 01d647
    echo Testcase 13
Packit 01d647
    echo ===========
Packit 01d647
    copyTestFile $IMG t.jpg
Packit 01d647
    copy s.xmp t.xmp
Packit 01d647
    runTest exiv2 -iX t.jpg
Packit 01d647
    runTest exiv2 -px t.jpg
Packit 01d647
    runTest exiv2 -v -PEkycv t.jpg
Packit 01d647
    runTest exiv2 -pi t.jpg
Packit 01d647
Packit 01d647
    # 14) Convert a few other tags of interest from Exif/IPTC to XMP
Packit 01d647
    echo
Packit 01d647
    echo Testcase 14
Packit 01d647
    echo ===========
Packit 01d647
    copyTestFile $IMG u.jpg
Packit 01d647
    runTest exiv2 -M'set Exif.Photo.DateTimeOriginal 2003:12:14 12:01:44' u.jpg
Packit 01d647
    runTest exiv2 -M'set Exif.Photo.SubSecTimeOriginal 999999999' u.jpg
Packit 01d647
    runTest exiv2 -M'set Exif.Photo.ExifVersion 48 50 50 49' u.jpg
Packit 01d647
    runTest exiv2 -M'set Exif.Photo.ComponentsConfiguration 1 2 3 0' u.jpg
Packit 01d647
    runTest exiv2 -M'set Exif.Photo.Flash 73' u.jpg
Packit 01d647
    runTest exiv2 -M'set Exif.GPSInfo.GPSLatitude 3/1 8/1 29734512/1000000' u.jpg
Packit 01d647
    runTest exiv2 -M'set Exif.GPSInfo.GPSLatitudeRef N' u.jpg
Packit 01d647
    runTest exiv2 -M'set Exif.GPSInfo.GPSVersionID 2 2 0 1' u.jpg
Packit 01d647
    runTest exiv2 -M'set Exif.GPSInfo.GPSTimeStamp 1/1 2/1 999999999/1000000000' u.jpg
Packit 01d647
Packit 01d647
    runTest exiv2 -PEkycv u.jpg
Packit 01d647
    runTest exiv2 -pi u.jpg
Packit 01d647
    rm -f u.xmp
Packit 01d647
    runTest exiv2 -eX u.jpg
Packit 01d647
    runTest exiv2 -px u.xmp
Packit 01d647
    runTest exiv2 -PEkycv u.xmp
Packit 01d647
    runTest exiv2 -pi u.xmp
Packit 01d647
Packit 01d647
    # 15) And back to Exif/IPTC
Packit 01d647
    echo
Packit 01d647
    echo Testcase 15
Packit 01d647
    echo ===========
Packit 01d647
    copyTestFile $IMG v.jpg
Packit 01d647
    copy u.xmp v.xmp
Packit 01d647
    runTest exiv2 -M'set Xmp.xmp.ModifyDate 2015-04-17T18:10:22Z' v.xmp
Packit 01d647
    TZ=GMT-8 runTest exiv2 -iX v.jpg
Packit 01d647
    runTest exiv2 -px v.jpg
Packit 01d647
    # evade this test on MSVC builds (Issue #485)
Packit 01d647
    platform=$(runTest exiv2 -vV 2>/dev/null | grep platform=)
Packit Service fb147c
    if [ "$platform" == "platform=windows" -o "$platform" == "platform=mingw64" -o "$platform" == "platform=msys" ]; then
Packit 01d647
        runTest exiv2 -PEkycv v.jpg | sed -E -e 's#17 19:10:22#18 02:10:22#g'
Packit Service fb147c
    else
Packit 01d647
        runTest exiv2 -PEkycv v.jpg
Packit 01d647
    fi
Packit 01d647
    runTest exiv2 -pi v.jpg
Packit Service fb147c
Packit 01d647
    # 16) https://github.com/Exiv2/exiv2/issues/521
Packit 01d647
    echo
Packit 01d647
    echo Testcase 16
Packit 01d647
    echo ===========
Packit 01d647
    copyTestFile                             DSC_3079.jpg
Packit 01d647
    runTest exiv2 -px                        DSC_3079.jpg
Packit 01d647
    runTest exiv2 -M"del Xmp.mwg-rs.Regions" DSC_3079.jpg
Packit 01d647
    runTest exiv2 -px                        DSC_3079.jpg
Packit 01d647
Packit 01d647
) > $results 2>&1
Packit 01d647
Packit Service fb147c
reportTest
Packit 01d647
Packit 01d647
# That's all Folks!
Packit 01d647
##