From 4f9bed24e167c15bd71dcc900e066a1e03bc56bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milo=C5=A1=20Komar=C4=8Devi=C4=87?= Date: Wed, 11 May 2022 18:00:24 +0200 Subject: [PATCH] Add more JXL tests --- test/data/issue_2233_poc1.jxl | Bin 0 -> 19049 bytes test/data/issue_2233_poc2.jxl | Bin 0 -> 19049 bytes .../issue_2233_poc1.jxl.out | 39 ++++++++++++++++++ .../issue_2233_poc2.jxl.out | 39 ++++++++++++++++++ tests/bugfixes/github/test_issue_2233.py | 37 +++++++++++++++++ 5 files changed, 115 insertions(+) create mode 100644 test/data/issue_2233_poc1.jxl create mode 100644 test/data/issue_2233_poc2.jxl create mode 100644 test/data/test_reference_files/issue_2233_poc1.jxl.out create mode 100644 test/data/test_reference_files/issue_2233_poc2.jxl.out create mode 100644 tests/bugfixes/github/test_issue_2233.py diff --git a/test/data/issue_2233_poc1.jxl b/test/data/issue_2233_poc1.jxl new file mode 100644 index 0000000000000000000000000000000000000000..e5570ab3807576a710819a018fd2d7901d555c37 GIT binary patch literal 19049 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 ?cy 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 literal 0 HcmV?d00001 diff --git a/test/data/test_reference_files/issue_2233_poc1.jxl.out b/test/data/test_reference_files/issue_2233_poc1.jxl.out new file mode 100644 index 00000000..7b7fb75d --- /dev/null +++ b/test/data/test_reference_files/issue_2233_poc1.jxl.out @@ -0,0 +1,39 @@ +Exif.Image.ImageWidth Long 1 160 160 +Exif.Image.ImageLength Long 1 97 97 +Exif.Image.BitsPerSample Short 3 8 8 8 8 8 8 +Exif.Image.Orientation Short 1 1 top, left +Exif.Image.XResolution Rational 1 300/1 300 +Exif.Image.YResolution Rational 1 300/1 300 +Exif.Image.ResolutionUnit Short 1 2 inch +Exif.Image.Software Ascii 13 GIMP 2.99.11 GIMP 2.99.11 +Exif.Image.DateTime Ascii 20 2022:05:10 17:10:08 2022:05:10 17:10:08 +Exif.Image.ExifTag Long 1 202 202 +Exif.Photo.ColorSpace Short 1 1 sRGB +Exif.Image.GPSTag Long 1 220 220 +Exif.GPSInfo.GPSAltitude Rational 1 0/100 0.0 m +Xmp.xmpMM.DocumentID XmpText 52 gimp:docid:gimp:044333cc-8cd4-44da-a3f7-b4d9ae9ee740 gimp:docid:gimp:044333cc-8cd4-44da-a3f7-b4d9ae9ee740 +Xmp.xmpMM.InstanceID XmpText 44 xmp.iid:b9cf7f00-cf00-4264-a8f8-bccde48e0f1a xmp.iid:b9cf7f00-cf00-4264-a8f8-bccde48e0f1a +Xmp.xmpMM.OriginalDocumentID XmpText 44 xmp.did:6589fec5-f1c4-4e37-b7ba-f58bfcc61271 xmp.did:6589fec5-f1c4-4e37-b7ba-f58bfcc61271 +Xmp.xmpMM.History XmpText 0 type="Seq" +Xmp.xmpMM.History[1] XmpText 0 type="Struct" +Xmp.xmpMM.History[1]/stEvt:action XmpText 5 saved saved +Xmp.xmpMM.History[1]/stEvt:changed XmpText 9 /metadata /metadata +Xmp.xmpMM.History[1]/stEvt:instanceID XmpText 44 xmp.iid:d87c2c5a-77f8-4da9-b6ac-04ce223765a9 xmp.iid:d87c2c5a-77f8-4da9-b6ac-04ce223765a9 +Xmp.xmpMM.History[1]/stEvt:softwareAgent XmpText 20 GIMP 2.99.11 (Linux) GIMP 2.99.11 (Linux) +Xmp.xmpMM.History[1]/stEvt:when XmpText 25 2022-05-10T17:09:05+02:00 2022-05-10T17:09:05+02:00 +Xmp.xmpMM.History[2] XmpText 0 type="Struct" +Xmp.xmpMM.History[2]/stEvt:action XmpText 5 saved saved +Xmp.xmpMM.History[2]/stEvt:changed XmpText 1 / / +Xmp.xmpMM.History[2]/stEvt:instanceID XmpText 44 xmp.iid:f9384fe5-1151-433d-a148-49f9fe6cf112 xmp.iid:f9384fe5-1151-433d-a148-49f9fe6cf112 +Xmp.xmpMM.History[2]/stEvt:softwareAgent XmpText 20 GIMP 2.99.11 (Linux) GIMP 2.99.11 (Linux) +Xmp.xmpMM.History[2]/stEvt:when XmpText 25 2022-05-10T17:10:08+02:00 2022-05-10T17:10:08+02:00 +Xmp.dc.Format XmpText 9 image/jxl image/jxl +Xmp.dc.creator XmpSeq 1 exiv2.org exiv2.org +Xmp.dc.description LangAlt 1 lang="x-default" Test image lang="x-default" Test image +Xmp.dc.title LangAlt 1 lang="x-default" Logo lang="x-default" Logo +Xmp.GIMP.API XmpText 3 3.0 3.0 +Xmp.GIMP.Platform XmpText 5 Linux Linux +Xmp.GIMP.TimeStamp XmpText 16 1652195408540570 1652195408540570 +Xmp.GIMP.Version XmpText 7 2.99.11 2.99.11 +Xmp.tiff.Orientation XmpText 1 1 top, left +Xmp.xmp.CreatorTool XmpText 4 GIMP GIMP diff --git a/test/data/test_reference_files/issue_2233_poc2.jxl.out b/test/data/test_reference_files/issue_2233_poc2.jxl.out new file mode 100644 index 00000000..7b7fb75d --- /dev/null +++ b/test/data/test_reference_files/issue_2233_poc2.jxl.out @@ -0,0 +1,39 @@ +Exif.Image.ImageWidth Long 1 160 160 +Exif.Image.ImageLength Long 1 97 97 +Exif.Image.BitsPerSample Short 3 8 8 8 8 8 8 +Exif.Image.Orientation Short 1 1 top, left +Exif.Image.XResolution Rational 1 300/1 300 +Exif.Image.YResolution Rational 1 300/1 300 +Exif.Image.ResolutionUnit Short 1 2 inch +Exif.Image.Software Ascii 13 GIMP 2.99.11 GIMP 2.99.11 +Exif.Image.DateTime Ascii 20 2022:05:10 17:10:08 2022:05:10 17:10:08 +Exif.Image.ExifTag Long 1 202 202 +Exif.Photo.ColorSpace Short 1 1 sRGB +Exif.Image.GPSTag Long 1 220 220 +Exif.GPSInfo.GPSAltitude Rational 1 0/100 0.0 m +Xmp.xmpMM.DocumentID XmpText 52 gimp:docid:gimp:044333cc-8cd4-44da-a3f7-b4d9ae9ee740 gimp:docid:gimp:044333cc-8cd4-44da-a3f7-b4d9ae9ee740 +Xmp.xmpMM.InstanceID XmpText 44 xmp.iid:b9cf7f00-cf00-4264-a8f8-bccde48e0f1a xmp.iid:b9cf7f00-cf00-4264-a8f8-bccde48e0f1a +Xmp.xmpMM.OriginalDocumentID XmpText 44 xmp.did:6589fec5-f1c4-4e37-b7ba-f58bfcc61271 xmp.did:6589fec5-f1c4-4e37-b7ba-f58bfcc61271 +Xmp.xmpMM.History XmpText 0 type="Seq" +Xmp.xmpMM.History[1] XmpText 0 type="Struct" +Xmp.xmpMM.History[1]/stEvt:action XmpText 5 saved saved +Xmp.xmpMM.History[1]/stEvt:changed XmpText 9 /metadata /metadata +Xmp.xmpMM.History[1]/stEvt:instanceID XmpText 44 xmp.iid:d87c2c5a-77f8-4da9-b6ac-04ce223765a9 xmp.iid:d87c2c5a-77f8-4da9-b6ac-04ce223765a9 +Xmp.xmpMM.History[1]/stEvt:softwareAgent XmpText 20 GIMP 2.99.11 (Linux) GIMP 2.99.11 (Linux) +Xmp.xmpMM.History[1]/stEvt:when XmpText 25 2022-05-10T17:09:05+02:00 2022-05-10T17:09:05+02:00 +Xmp.xmpMM.History[2] XmpText 0 type="Struct" +Xmp.xmpMM.History[2]/stEvt:action XmpText 5 saved saved +Xmp.xmpMM.History[2]/stEvt:changed XmpText 1 / / +Xmp.xmpMM.History[2]/stEvt:instanceID XmpText 44 xmp.iid:f9384fe5-1151-433d-a148-49f9fe6cf112 xmp.iid:f9384fe5-1151-433d-a148-49f9fe6cf112 +Xmp.xmpMM.History[2]/stEvt:softwareAgent XmpText 20 GIMP 2.99.11 (Linux) GIMP 2.99.11 (Linux) +Xmp.xmpMM.History[2]/stEvt:when XmpText 25 2022-05-10T17:10:08+02:00 2022-05-10T17:10:08+02:00 +Xmp.dc.Format XmpText 9 image/jxl image/jxl +Xmp.dc.creator XmpSeq 1 exiv2.org exiv2.org +Xmp.dc.description LangAlt 1 lang="x-default" Test image lang="x-default" Test image +Xmp.dc.title LangAlt 1 lang="x-default" Logo lang="x-default" Logo +Xmp.GIMP.API XmpText 3 3.0 3.0 +Xmp.GIMP.Platform XmpText 5 Linux Linux +Xmp.GIMP.TimeStamp XmpText 16 1652195408540570 1652195408540570 +Xmp.GIMP.Version XmpText 7 2.99.11 2.99.11 +Xmp.tiff.Orientation XmpText 1 1 top, left +Xmp.xmp.CreatorTool XmpText 4 GIMP GIMP diff --git a/tests/bugfixes/github/test_issue_2233.py b/tests/bugfixes/github/test_issue_2233.py new file mode 100644 index 00000000..fe1f8652 --- /dev/null +++ b/tests/bugfixes/github/test_issue_2233.py @@ -0,0 +1,37 @@ +from system_tests import CaseMeta, path + +class TestJXLBoxEndXML(metaclass=CaseMeta): + """ + Regression test for the bug described in: + https://github.com/Exiv2/exiv2/issues/2233 + """ + url = "https://github.com/Exiv2/exiv2/issues/2233" + + filename = path("$data_path/issue_2233_poc1.jxl") + commands = ["$exiv2 -pS $filename"] + stdout = ["""Exiv2::BmffImage::boxHandler: JXL 0->12 +Exiv2::BmffImage::boxHandler: ftyp 12->20 brand: jxl +Exiv2::BmffImage::boxHandler: jxlc 32->15060 +Exiv2::BmffImage::boxHandler: Exif 15092->258 +Exiv2::BmffImage::boxHandler: xml 15350->3699 +"""] + stderr = [""] + retval = [0] + +class TestJXLBoxEndExif(metaclass=CaseMeta): + """ + Regression test for the bug described in: + https://github.com/Exiv2/exiv2/issues/2233 + """ + url = "https://github.com/Exiv2/exiv2/issues/2233" + + filename = path("$data_path/issue_2233_poc2.jxl") + commands = ["$exiv2 -pS $filename"] + stdout = ["""Exiv2::BmffImage::boxHandler: JXL 0->12 +Exiv2::BmffImage::boxHandler: ftyp 12->20 brand: jxl +Exiv2::BmffImage::boxHandler: jxlc 32->15060 +Exiv2::BmffImage::boxHandler: xml 15092->3699 +Exiv2::BmffImage::boxHandler: Exif 18791->258 +"""] + stderr = [""] + retval = [0]