exiv2/tests/bugfixes/github/test_pr_2000.py
2021-11-16 19:15:55 +00:00

215 lines
7.3 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- 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