1
from __future__ import annotations
8
from PIL import Image, ImageShow
10
from .helper import hopper, is_win32, on_ci
13
def test_sanity() -> None:
18
def test_register() -> None:
20
class TestViewer(ImageShow.Viewer):
23
ImageShow.register(TestViewer())
26
ImageShow._viewers.pop()
29
@pytest.mark.parametrize(
33
def test_viewer_show(order: int) -> None:
34
class TestViewer(ImageShow.Viewer):
35
def show_image(self, image: Image.Image, **options: Any) -> bool:
36
self.methodCalled = True
40
ImageShow.register(viewer, order)
42
for mode in ("1", "I;16", "LA", "RGB", "RGBA"):
43
viewer.methodCalled = False
44
with hopper(mode) as im:
45
assert ImageShow.show(im)
46
assert viewer.methodCalled
49
ImageShow._viewers.pop(0)
53
not on_ci() or is_win32(),
54
reason="Only run on CIs; hangs on Windows CIs",
56
@pytest.mark.parametrize("mode", ("1", "I;16", "LA", "RGB", "RGBA"))
57
def test_show(mode: str) -> None:
59
assert ImageShow.show(im)
62
def test_show_without_viewers() -> None:
63
viewers = ImageShow._viewers
64
ImageShow._viewers = []
67
assert not ImageShow.show(im)
69
ImageShow._viewers = viewers
72
@pytest.mark.parametrize(
76
ImageShow.WindowsViewer(),
77
ImageShow.MacViewer(),
78
ImageShow.XDGViewer(),
79
ImageShow.DisplayViewer(),
80
ImageShow.GmDisplayViewer(),
81
ImageShow.EogViewer(),
83
ImageShow.IPythonViewer(),
86
def test_show_file(viewer: ImageShow.Viewer) -> None:
87
assert not os.path.exists("missing.png")
89
with pytest.raises(FileNotFoundError):
90
viewer.show_file("missing.png")
93
def test_viewer() -> None:
94
viewer = ImageShow.Viewer()
96
im = Image.new("L", (1, 1))
97
assert viewer.get_format(im) is None
99
with pytest.raises(NotImplementedError):
100
viewer.get_command("")
103
@pytest.mark.parametrize("viewer", ImageShow._viewers)
104
def test_viewers(viewer: ImageShow.Viewer) -> None:
106
viewer.get_command("test.jpg")
107
except NotImplementedError:
111
def test_ipythonviewer() -> None:
112
pytest.importorskip("IPython", reason="IPython not installed")
113
for viewer in ImageShow._viewers:
114
if isinstance(viewer, ImageShow.IPythonViewer):
121
assert test_viewer.show(im) == 1