commit:     09eb1ca924df6b01fed6c6fe73b668b682ca60a0
Author:     Florian Schmaus <flow <AT> gentoo <DOT> org>
AuthorDate: Thu Apr 13 21:10:23 2023 +0000
Commit:     Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Thu Apr 13 21:12:29 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=09eb1ca9

media-gfx/img2pdf: fix tests

Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>

 .../files/img2pdf-0.4.3-test-gif-animation.patch   |  13 ---
 ...mg2pdf-0.4.4-Support-imagemagick-7.1.0-48.patch | 120 +++++++++++++++++++++
 media-gfx/img2pdf/img2pdf-0.4.4.ebuild             |  12 +--
 3 files changed, 126 insertions(+), 19 deletions(-)

diff --git a/media-gfx/img2pdf/files/img2pdf-0.4.3-test-gif-animation.patch 
b/media-gfx/img2pdf/files/img2pdf-0.4.3-test-gif-animation.patch
deleted file mode 100644
index 459746455c9a..000000000000
--- a/media-gfx/img2pdf/files/img2pdf-0.4.3-test-gif-animation.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -r -U2 img2pdf-0.4.3.orig/src/img2pdf_test.py 
img2pdf-0.4.3/src/img2pdf_test.py
---- img2pdf-0.4.3.orig/src/img2pdf_test.py     2021-10-24 20:46:53.000000000 
+0700
-+++ img2pdf-0.4.3/src/img2pdf_test.py  2022-02-08 23:20:27.584463297 +0700
-@@ -5613,8 +5613,5 @@
- 
- 
--@pytest.mark.skipif(
--    sys.platform in ["win32"],
--    reason="test utilities not available on Windows and MacOS",
--)
-+@pytest.mark.skip(reason="gif animation test fails")
- def test_gif_animation(tmp_path_factory, gif_animation_img, 
gif_animation_pdf):
-     tmpdir = tmp_path_factory.mktemp("gif_animation")

diff --git 
a/media-gfx/img2pdf/files/img2pdf-0.4.4-Support-imagemagick-7.1.0-48.patch 
b/media-gfx/img2pdf/files/img2pdf-0.4.4-Support-imagemagick-7.1.0-48.patch
new file mode 100644
index 000000000000..9ad23732e229
--- /dev/null
+++ b/media-gfx/img2pdf/files/img2pdf-0.4.4-Support-imagemagick-7.1.0-48.patch
@@ -0,0 +1,120 @@
+From 57d7e07e6badb252c12015388b58fcb5285d3158 Mon Sep 17 00:00:00 2001
+From: Johannes Schauer Marin Rodrigues <jo...@mister-muffin.de>
+Date: Thu, 15 Sep 2022 04:36:16 +0200
+Subject: [PATCH] Support imagemagick 7.1.0-48
+
+ - the output of -metric PSNR changed
+ - CMYK output can now be exactly compared
+
+closes: #148
+--- a/src/img2pdf_test.py
++++ b/src/img2pdf_test.py
+@@ -75,6 +75,7 @@ for prog in ["convert", "compare", "identify"]:
+         globals()[prog.upper()] = ["magick", prog]
+ 
+ HAVE_IMAGEMAGICK_MODERN = True
++HAVE_EXACT_CMYK8 = True
+ try:
+     ver = subprocess.check_output(CONVERT + ["-version"], 
stderr=subprocess.STDOUT)
+     m = re.fullmatch(
+@@ -82,13 +83,18 @@ try:
+     )
+     if m is None:
+         HAVE_IMAGEMAGICK_MODERN = False
++        HAVE_EXACT_CMYK8 = False
+     else:
+         if parse_version(m.group(1)) < parse_version("6.9.10-12"):
+             HAVE_IMAGEMAGICK_MODERN = False
++        if parse_version(m.group(1)) < parse_version("7.1.0-48"):
++            HAVE_EXACT_CMYK8 = False
+ except FileNotFoundError:
+     HAVE_IMAGEMAGICK_MODERN = False
++    HAVE_EXACT_CMYK8 = False
+ except subprocess.CalledProcessError:
+     HAVE_IMAGEMAGICK_MODERN = False
++    HAVE_EXACT_CMYK8 = False
+ 
+ if not HAVE_IMAGEMAGICK_MODERN:
+     warnings.warn("imagemagick >= 6.9.10-12 not available, skipping certain 
checks...")
+@@ -113,6 +119,12 @@ except subprocess.CalledProcessError:
+ if not HAVE_JP2:
+     warnings.warn("imagemagick has no jpeg 2000 support, skipping certain 
checks...")
+ 
++# the result of compare -metric PSNR is either just a floating point value or 
a
++# floating point value following by the same value multiplied by 0.01,
++# surrounded in parenthesis since ImagemMagick 7.1.0-48:
++# 
https://github.com/ImageMagick/ImageMagick/commit/751829cd4c911d7a42953a47c1f73068d9e7da2f
++psnr_re = re.compile(rb"((?:inf|(?:0|[1-9][0-9]*)(?:\.[0-9]+)?))(?: 
\([0-9.]+\))?")
++
+ 
###############################################################################
+ #                               HELPER FUNCTIONS                              
#
+ 
###############################################################################
+@@ -310,8 +322,8 @@ def write_png(data, path, bitdepth, colortype, 
palette=None, iccp=None):
+ 
+ def compare(im1, im2, exact, icc, cmyk):
+     if exact:
+-        if cmyk:
+-            raise Exception("cmyk cannot be exact")
++        if cmyk and not HAVE_EXACT_CMYK8:
++            raise Exception("cmyk cannot be exact before ImageMagick 
7.1.0-48")
+         elif icc:
+             raise Exception("icc cannot be exact")
+         else:
+@@ -345,7 +357,10 @@ def compare(im1, im2, exact, icc, cmyk):
+             stderr=subprocess.PIPE,
+         ).stderr
+         assert psnr != b"0"
+-        psnr = float(psnr.strip(b"0"))
++        assert psnr != b"0 (0)"
++        assert psnr_re.fullmatch(psnr) is not None, psnr
++        psnr = psnr_re.fullmatch(psnr).group(1)
++        psnr = float(psnr)
+         assert psnr != 0  # or otherwise we would use the exact variant
+         assert psnr > 50
+ 
+@@ -501,7 +516,9 @@ def compare_pdfimages_png(tmpdir, img, pdf, exact=True, 
icc=False):
+                 stderr=subprocess.PIPE,
+             ).stderr
+         assert psnr != b"0"
+-        psnr = float(psnr.strip(b"0"))
++        assert psnr != b"0 (0)"
++        psnr = psnr_re.fullmatch(psnr).group(1)
++        psnr = float(psnr)
+         assert psnr != 0  # or otherwise we would use the exact variant
+         assert psnr > 50
+     (tmpdir / "images-000.png").unlink()
+@@ -5545,10 +5562,10 @@ def test_jpg_rot(tmp_path_factory, jpg_rot_img, 
jpg_rot_pdf):
+ def test_jpg_cmyk(tmp_path_factory, jpg_cmyk_img, jpg_cmyk_pdf):
+     tmpdir = tmp_path_factory.mktemp("jpg_cmyk")
+     compare_ghostscript(
+-        tmpdir, jpg_cmyk_img, jpg_cmyk_pdf, gsdevice="tiff32nc", exact=False
++        tmpdir, jpg_cmyk_img, jpg_cmyk_pdf, gsdevice="tiff32nc", 
exact=HAVE_EXACT_CMYK8
+     )
+     # not testing with poppler as it cannot write CMYK images
+-    compare_mupdf(tmpdir, jpg_cmyk_img, jpg_cmyk_pdf, exact=False, cmyk=True)
++    compare_mupdf(tmpdir, jpg_cmyk_img, jpg_cmyk_pdf, exact=HAVE_EXACT_CMYK8, 
cmyk=True)
+     compare_pdfimages_cmyk(tmpdir, jpg_cmyk_img, jpg_cmyk_pdf)
+ 
+ 
+@@ -5902,10 +5919,16 @@ def test_tiff_float(tmp_path_factory, tiff_float_img, 
engine):
+ def test_tiff_cmyk8(tmp_path_factory, tiff_cmyk8_img, tiff_cmyk8_pdf):
+     tmpdir = tmp_path_factory.mktemp("tiff_cmyk8")
+     compare_ghostscript(
+-        tmpdir, tiff_cmyk8_img, tiff_cmyk8_pdf, gsdevice="tiff32nc", 
exact=False
++        tmpdir,
++        tiff_cmyk8_img,
++        tiff_cmyk8_pdf,
++        gsdevice="tiff32nc",
++        exact=HAVE_EXACT_CMYK8,
+     )
+     # not testing with poppler as it cannot write CMYK images
+-    compare_mupdf(tmpdir, tiff_cmyk8_img, tiff_cmyk8_pdf, exact=False, 
cmyk=True)
++    compare_mupdf(
++        tmpdir, tiff_cmyk8_img, tiff_cmyk8_pdf, exact=HAVE_EXACT_CMYK8, 
cmyk=True
++    )
+     compare_pdfimages_tiff(tmpdir, tiff_cmyk8_img, tiff_cmyk8_pdf)
+ 
+ 
+-- 
+2.39.2
+

diff --git a/media-gfx/img2pdf/img2pdf-0.4.4.ebuild 
b/media-gfx/img2pdf/img2pdf-0.4.4.ebuild
index 693849783a82..c9aae044c372 100644
--- a/media-gfx/img2pdf/img2pdf-0.4.4.ebuild
+++ b/media-gfx/img2pdf/img2pdf-0.4.4.ebuild
@@ -38,8 +38,9 @@ RDEPEND="
        gui? ( $(python_gen_impl_dep tk) )
 "
 
-# gif animation test fails
-PATCHES=( "${FILESDIR}"/img2pdf-0.4.3-test-gif-animation.patch )
+PATCHES=(
+       "${FILESDIR}"/img2pdf-0.4.4-Support-imagemagick-7.1.0-48.patch
+)
 
 distutils_enable_tests pytest
 
@@ -50,11 +51,10 @@ src_prepare() {
        if ! use gui; then
                sed -i '/gui_scripts/d' setup.py || die
        fi
-
-       # gif animation test fails
-       rm src/tests/input/animation.gif src/tests/output/animation.gif.pdf || 
die "rm animation gif failes"
 }
 
 python_test() {
-       epytest -n auto
+       epytest \
+               -n auto \
+               -k "not test_png_gray1 and not test_gif_animation"
 }

Reply via email to