You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

215 lines
7.3 KiB
Python

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

# -*- coding: utf-8 -*-
import system_tests
from system_tests import CaseMeta, path, check_no_ASAN_UBSAN_errors
class TestVerboseExtractXmpSidecarToStdout(metaclass=CaseMeta):
"""
Regression test for 'verbose extracting XMP sidecar to stdout' bug described in:
https://github.com/Exiv2/exiv2/issues/1934
"""
url = "https://github.com/Exiv2/exiv2/issues/1934"
filename = path("$data_path/issue_1934_poc4.jpg")
commands = ["$exiv2 --verbose --extract X- $filename"]
stdout = ["""<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<dc:subject>
<rdf:Bag>
<rdf:li>Value 1</rdf:li>
</rdf:Bag>
</dc:subject>
<exif:UserComment>
<rdf:Alt>
<rdf:li xml:lang="x-default">Value 1</rdf:li>
</rdf:Alt>
</exif:UserComment>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>"""]
stderr = [""]
retval = [0]
class TestVerboseModifyRegAddExtractXmpSidecarToStdout(metaclass=CaseMeta):
"""
Regression test for 'verbose with modify register and add when extracting XMP sidecar to stdout'
bug described in:
https://github.com/Exiv2/exiv2/issues/1934
"""
url = "https://github.com/Exiv2/exiv2/issues/1934"
filename = path("$data_path/issue_1934_poc4.jpg")
commands = ["""$exiv2 --verbose --Modify "reg TempGroup tempgroup/" --Modify "add Xmp.TempGroup.val Value 1" --extract X- $filename"""]
stdout = ["""<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:TempGroup="tempgroup/"
xmlns:exif="http://ns.adobe.com/exif/1.0/"
TempGroup:val="Value 1">
<dc:subject>
<rdf:Bag>
<rdf:li>Value 1</rdf:li>
</rdf:Bag>
</dc:subject>
<exif:UserComment>
<rdf:Alt>
<rdf:li xml:lang="x-default">Value 1</rdf:li>
</rdf:Alt>
</exif:UserComment>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>"""]
stderr = [""]
retval = [0]
class TestVerboseModifySetExtractXmpSidecarToStdout(metaclass=CaseMeta):
"""
Regression test for 'verbose modify set when extracting XMP sidecar to stdout' bug described in:
https://github.com/Exiv2/exiv2/issues/1934
"""
url = "https://github.com/Exiv2/exiv2/issues/1934"
filename = path("$data_path/issue_1934_poc4.jpg")
commands = ["""$exiv2 --verbose --Modify "set Xmp.dc.subject Value 2" --extract X- $filename"""]
stdout = ["""<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<dc:subject>
<rdf:Bag>
<rdf:li>Value 1</rdf:li>
<rdf:li>Value 2</rdf:li>
</rdf:Bag>
</dc:subject>
<exif:UserComment>
<rdf:Alt>
<rdf:li xml:lang="x-default">Value 1</rdf:li>
</rdf:Alt>
</exif:UserComment>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>"""]
stderr = [""]
retval = [0]
class TestVerboseModifyDelExtractXmpSidecarToStdout(metaclass=CaseMeta):
"""
Regression test for 'verbose modify delete when extracting XMP sidecar to stdout' bug described in:
https://github.com/Exiv2/exiv2/issues/1934
"""
url = "https://github.com/Exiv2/exiv2/issues/1934"
filename = path("$data_path/issue_1934_poc4.jpg")
commands = ["""$exiv2 --verbose --Modify "del Xmp.dc.subject" --extract X- $filename"""]
stdout = ["""<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<exif:UserComment>
<rdf:Alt>
<rdf:li xml:lang="x-default">Value 1</rdf:li>
</rdf:Alt>
</exif:UserComment>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>"""]
stderr = [""]
retval = [0]
class TestVerboseExtractRawMetadataToStdout(metaclass=CaseMeta):
"""
Regression test for 'verbose extracting raw metadata to stdout' bug described in:
https://github.com/Exiv2/exiv2/issues/1934
"""
url = "https://github.com/Exiv2/exiv2/issues/1934"
filenameJPG = path("$data_path/issue_1934_poc4.jpg")
filenameEXV = path("$tmp_path/issue_1934_poc4.exv")
filenameRefEXV = path("$data_path/issue_1934_poc4_ref.exv")
commands = ["$exiv2 --verbose --extract XXeix- $filenameJPG > $filenameEXV",
"cmp $filenameEXV $filenameRefEXV"]
stderr = [""]*2
retval = [0]*2
compare_stdout = check_no_ASAN_UBSAN_errors
class TestVerboseExtractThumbnailToStdout(metaclass=CaseMeta):
"""
Regression test for 'verbose extracting the thumbnail to stdout' bug described in:
https://github.com/Exiv2/exiv2/issues/1934
"""
url = "https://github.com/Exiv2/exiv2/issues/1934"
filenameJPG = path("$data_path/issue_1934_poc4.jpg")
filenameThumbnail = path("$tmp_path/issue_1934_poc4-thumb.jpg")
filenameRefThumbnail = path("$data_path/issue_1934_poc4-thumb_ref.jpg")
commands = ["$exiv2 --verbose --extract t- $filenameJPG > $filenameThumbnail",
"cmp $filenameThumbnail $filenameRefThumbnail"]
stderr = [""]*2
retval = [0]*2
compare_stdout = check_no_ASAN_UBSAN_errors
class TestVerboseExtractICCProfileToStdout(metaclass=CaseMeta):
"""
Regression test for 'verbose extracting the ICC profile to stdout' bug described in:
https://github.com/Exiv2/exiv2/issues/1934
"""
url = "https://github.com/Exiv2/exiv2/issues/1934"
filenameJPG = path("$data_path/issue_1934_poc4.jpg")
filenameICC = path("$tmp_path/issue_1934_poc4.icc")
filenameRefICC = path("$data_path/issue_1934_poc4_ref.icc")
commands = ["$exiv2 --verbose --extract C- $filenameJPG > $filenameICC",
"cmp $filenameICC $filenameRefICC"]
stderr = [""]*2
retval = [0]*2
compare_stdout = check_no_ASAN_UBSAN_errors
class TestVerboseExtractCommentToStdout(metaclass=CaseMeta):
"""
Regression test for 'verbose extracting the comment to stdout' bug described in:
https://github.com/Exiv2/exiv2/issues/1934
"""
url = "https://github.com/Exiv2/exiv2/issues/1934"
filenameJPG = path("$data_path/issue_1934_poc4.jpg")
filenameComment = path("$tmp_path/issue_1934_poc4_comment.txt")
filenameRefComment = path("$data_path/issue_1934_poc4_comment_ref.txt")
commands = ["$exiv2 --verbose --extract c- $filenameJPG > $filenameComment",
"cmp $filenameComment $filenameRefComment"]
stderr = [""]*2
retval = [0]*2
compare_stdout = check_no_ASAN_UBSAN_errors