-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Closed
Description
What did you do?
Updated to ghostscript 10.06, ran Pillow's tests
### What actually happened?
Three tests failed, which didn't happen with ghostscript 10.05.1
FAILED Tests/test_file_eps.py::test_1[Tests/images/eps/1.eps] - Failed: got different content
FAILED Tests/test_file_eps.py::test_1[Tests/images/eps/1_boundingbox_after_imagedata.eps] - Failed: got different content
FAILED Tests/test_file_eps.py::test_1[Tests/images/eps/1_second_imagedata.eps] - Failed: got different content
full log at the bottom below ⬇️
What are your OS, Python and Pillow versions?
- OS: Exherbo Linux
- Python: 3.12.11/3.13.7
- Pillow: 11.3.0
❯ python3 -m PIL.report
--------------------------------------------------------------------
Pillow 11.3.0
Python 3.13.7 (main, Sep 17 2025, 21:36:25) [GCC 15.2.0]
--------------------------------------------------------------------
Python executable is /usr/host/bin/python3
System Python files loaded from /usr/x86_64-pc-linux-gnu
--------------------------------------------------------------------
Python Pillow modules loaded from /usr/x86_64-pc-linux-gnu/lib/python3.13/site-packages/PIL
Binary Pillow modules loaded from /usr/x86_64-pc-linux-gnu/lib/python3.13/site-packages/PIL
--------------------------------------------------------------------
--- PIL CORE support ok, compiled for 11.3.0
*** TKINTER support not installed
--- FREETYPE2 support ok, loaded 2.14.1
--- LITTLECMS2 support ok, loaded 2.17
--- WEBP support ok, loaded 1.6.0
*** AVIF support not installed
--- JPEG support ok, compiled for libjpeg-turbo 3.1.2
--- OPENJPEG (JPEG2000) support ok, loaded 2.5.4
--- ZLIB (PNG/ZIP) support ok, loaded 1.3.1
--- LIBTIFF support ok, loaded 4.7.1
*** RAQM (Bidirectional Text) support not installed
*** LIBIMAGEQUANT (Quantization method) support not installed
--- XCB (X protocol) support ok
--------------------------------------------------------------------
Full log of the failures:
==================================================================================== FAILURES =====================================================================================
_________________________________________________________________________ test_1[Tests/images/eps/1.eps] __________________________________________________________________________
filename = 'Tests/images/eps/1.eps'
@pytest.mark.skipif(not HAS_GHOSTSCRIPT, reason="Ghostscript not available")
@pytest.mark.parametrize(
# These images have an "ImageData" descriptor.
"filename",
(
"Tests/images/eps/1.eps",
"Tests/images/eps/1_boundingbox_after_imagedata.eps",
"Tests/images/eps/1_second_imagedata.eps",
),
)
def test_1(filename: str) -> None:
with Image.open(filename) as im:
> assert_image_equal_tofile(im, "Tests/images/eps/1.bmp")
Tests/test_file_eps.py:277:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tests/helper.py:107: in assert_image_equal_tofile
assert_image_equal(a, img, msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
a = <PIL.EpsImagePlugin.EpsImageFile image mode=1 size=100x67 at 0x736DCBA6EED0>, b = <PIL.BmpImagePlugin.BmpImageFile image mode=1 size=100x67 at 0x736DCBA6F6B0>, msg = None
def assert_image_equal(a: Image.Image, b: Image.Image, msg: str | None = None) -> None:
assert a.mode == b.mode, msg or f"got mode {repr(a.mode)}, expected {repr(b.mode)}"
assert a.size == b.size, msg or f"got size {repr(a.size)}, expected {repr(b.size)}"
if a.tobytes() != b.tobytes():
try:
url = upload(a, b)
if url:
logger.error("URL for test images: %s", url)
except Exception:
pass
> pytest.fail(msg or "got different content")
E Failed: got different content
Tests/helper.py:95: Failed
___________________________________________________________ test_1[Tests/images/eps/1_boundingbox_after_imagedata.eps] ____________________________________________________________
filename = 'Tests/images/eps/1_boundingbox_after_imagedata.eps'
@pytest.mark.skipif(not HAS_GHOSTSCRIPT, reason="Ghostscript not available")
@pytest.mark.parametrize(
# These images have an "ImageData" descriptor.
"filename",
(
"Tests/images/eps/1.eps",
"Tests/images/eps/1_boundingbox_after_imagedata.eps",
"Tests/images/eps/1_second_imagedata.eps",
),
)
def test_1(filename: str) -> None:
with Image.open(filename) as im:
> assert_image_equal_tofile(im, "Tests/images/eps/1.bmp")
Tests/test_file_eps.py:277:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tests/helper.py:107: in assert_image_equal_tofile
assert_image_equal(a, img, msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
a = <PIL.EpsImagePlugin.EpsImageFile image mode=1 size=100x67 at 0x736D541011C0>, b = <PIL.BmpImagePlugin.BmpImageFile image mode=1 size=100x67 at 0x736D54100920>, msg = None
def assert_image_equal(a: Image.Image, b: Image.Image, msg: str | None = None) -> None:
assert a.mode == b.mode, msg or f"got mode {repr(a.mode)}, expected {repr(b.mode)}"
assert a.size == b.size, msg or f"got size {repr(a.size)}, expected {repr(b.size)}"
if a.tobytes() != b.tobytes():
try:
url = upload(a, b)
if url:
logger.error("URL for test images: %s", url)
except Exception:
pass
> pytest.fail(msg or "got different content")
E Failed: got different content
Tests/helper.py:95: Failed
_________________________________________________________________ test_1[Tests/images/eps/1_second_imagedata.eps] _________________________________________________________________
filename = 'Tests/images/eps/1_second_imagedata.eps'
@pytest.mark.skipif(not HAS_GHOSTSCRIPT, reason="Ghostscript not available")
@pytest.mark.parametrize(
# These images have an "ImageData" descriptor.
"filename",
(
"Tests/images/eps/1.eps",
"Tests/images/eps/1_boundingbox_after_imagedata.eps",
"Tests/images/eps/1_second_imagedata.eps",
),
)
def test_1(filename: str) -> None:
with Image.open(filename) as im:
> assert_image_equal_tofile(im, "Tests/images/eps/1.bmp")
Tests/test_file_eps.py:277:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tests/helper.py:107: in assert_image_equal_tofile
assert_image_equal(a, img, msg)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
a = <PIL.EpsImagePlugin.EpsImageFile image mode=1 size=100x67 at 0x736D54100B00>, b = <PIL.BmpImagePlugin.BmpImageFile image mode=1 size=100x67 at 0x736D54100800>, msg = None
def assert_image_equal(a: Image.Image, b: Image.Image, msg: str | None = None) -> None:
assert a.mode == b.mode, msg or f"got mode {repr(a.mode)}, expected {repr(b.mode)}"
assert a.size == b.size, msg or f"got size {repr(a.size)}, expected {repr(b.size)}"
if a.tobytes() != b.tobytes():
try:
url = upload(a, b)
if url:
logger.error("URL for test images: %s", url)
except Exception:
pass
> pytest.fail(msg or "got different content")
E Failed: got different content
Tests/helper.py:95: Failed
Metadata
Metadata
Assignees
Labels
No labels