Pillow/Tests/test_file_mic.py
Jon Dufresne 4f185329f4 Streamline test skipping based on supported features
This adds a new test decorator: skip_unless_feature(). The argument is
the same as passed to features.check(). If the feature is not supported,
the test will be skipped.

This removes several kinds of boilerplate copied and pasted around tests
so test feature checking is handled and displayed more consistently.

Refs #4193
2020-02-18 13:07:01 -08:00

72 lines
1.7 KiB
Python

import pytest
from PIL import Image, ImagePalette
from .helper import assert_image_similar, hopper, skip_unless_feature
try:
from PIL import MicImagePlugin
except ImportError:
olefile_installed = False
else:
olefile_installed = True
TEST_FILE = "Tests/images/hopper.mic"
pytestmark = [
pytest.mark.skipif(not olefile_installed, reason="olefile package not installed"),
skip_unless_feature("libtiff"),
]
def test_sanity():
with Image.open(TEST_FILE) as im:
im.load()
assert im.mode == "RGBA"
assert im.size == (128, 128)
assert im.format == "MIC"
# Adjust for the gamma of 2.2 encoded into the file
lut = ImagePalette.make_gamma_lut(1 / 2.2)
im = Image.merge("RGBA", [chan.point(lut) for chan in im.split()])
im2 = hopper("RGBA")
assert_image_similar(im, im2, 10)
def test_n_frames():
with Image.open(TEST_FILE) as im:
assert im.n_frames == 1
def test_is_animated():
with Image.open(TEST_FILE) as im:
assert not im.is_animated
def test_tell():
with Image.open(TEST_FILE) as im:
assert im.tell() == 0
def test_seek():
with Image.open(TEST_FILE) as im:
im.seek(0)
assert im.tell() == 0
with pytest.raises(EOFError):
im.seek(99)
assert im.tell() == 0
def test_invalid_file():
# Test an invalid OLE file
invalid_file = "Tests/images/flower.jpg"
with pytest.raises(SyntaxError):
MicImagePlugin.MicImageFile(invalid_file)
# Test a valid OLE file, but not a MIC file
ole_file = "Tests/images/test-ole-file.doc"
with pytest.raises(SyntaxError):
MicImagePlugin.MicImageFile(ole_file)