Pillow
1from __future__ import annotations2
3import logging4import os5
6import pytest7
8from PIL import Image9
10from .helper import hopper11
12
13def test_sanity() -> None:14im = hopper()15px = im.load()16
17assert px is not None18assert px[0, 0] == (20, 20, 70)19
20
21def test_close() -> None:22im = Image.open("Tests/images/hopper.gif")23im.close()24with pytest.raises(ValueError):25im.load()26with pytest.raises(ValueError):27im.getpixel((0, 0))28
29
30def test_close_after_load(caplog: pytest.LogCaptureFixture) -> None:31im = Image.open("Tests/images/hopper.gif")32im.load()33with caplog.at_level(logging.DEBUG):34im.close()35assert len(caplog.records) == 036
37
38def test_contextmanager() -> None:39fn = None40with Image.open("Tests/images/hopper.gif") as im:41fn = im.fp.fileno()42os.fstat(fn)43
44with pytest.raises(OSError):45os.fstat(fn)46
47
48def test_contextmanager_non_exclusive_fp() -> None:49with open("Tests/images/hopper.gif", "rb") as fp:50with Image.open(fp):51pass52
53assert not fp.closed54