Skip to content

Commit 54f4a34

Browse files
committed
Added has_feature_version
1 parent 9f5d1f7 commit 54f4a34

3 files changed

Lines changed: 24 additions & 20 deletions

File tree

Tests/helper.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,14 @@ def skip_unless_feature(feature: str) -> pytest.MarkDecorator:
175175
return pytest.mark.skipif(not features.check(feature), reason=reason)
176176

177177

178+
def has_feature_version(feature: str, required: str) -> bool:
179+
version = features.version(feature)
180+
assert version is not None
181+
version_required = parse_version(required)
182+
version_available = parse_version(version)
183+
return version_available >= version_required
184+
185+
178186
def skip_unless_feature_version(
179187
feature: str, required: str, reason: str | None = None
180188
) -> pytest.MarkDecorator:

Tests/test_file_webp_animated.py

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
from pathlib import Path
55

66
import pytest
7-
from packaging.version import parse as parse_version
87

9-
from PIL import GifImagePlugin, Image, WebPImagePlugin, features
8+
from PIL import GifImagePlugin, Image, WebPImagePlugin
109

1110
from .helper import (
1211
assert_image_equal,
1312
assert_image_similar,
13+
has_feature_version,
1414
is_big_endian,
1515
skip_unless_feature,
1616
)
@@ -53,11 +53,8 @@ def test_write_animation_L(tmp_path: Path) -> None:
5353
im.load()
5454
assert_image_similar(im, orig.convert("RGBA"), 32.9)
5555

56-
if is_big_endian():
57-
version = features.version_module("webp")
58-
assert version is not None
59-
if parse_version(version) < parse_version("1.2.2"):
60-
pytest.skip("Fails with libwebp earlier than 1.2.2")
56+
if is_big_endian() and not has_feature_version("webp", "1.2.2"):
57+
pytest.skip("Fails with libwebp earlier than 1.2.2")
6158
orig.seek(orig.n_frames - 1)
6259
im.seek(im.n_frames - 1)
6360
orig.load()
@@ -81,11 +78,8 @@ def check(temp_file: Path) -> None:
8178
assert_image_equal(im, frame1.convert("RGBA"))
8279

8380
# Compare second frame to original
84-
if is_big_endian():
85-
version = features.version_module("webp")
86-
assert version is not None
87-
if parse_version(version) < parse_version("1.2.2"):
88-
pytest.skip("Fails with libwebp earlier than 1.2.2")
81+
if is_big_endian() and not has_feature_version("webp", "1.2.2"):
82+
pytest.skip("Fails with libwebp earlier than 1.2.2")
8983
im.seek(1)
9084
im.load()
9185
assert_image_equal(im, frame2.convert("RGBA"))

Tests/test_image_quantize.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
from __future__ import annotations
22

33
import pytest
4-
from packaging.version import parse as parse_version
54

6-
from PIL import Image, features
5+
from PIL import Image
76

8-
from .helper import assert_image_similar, hopper, is_ppc64le, skip_unless_feature
7+
from .helper import (
8+
assert_image_similar,
9+
has_feature_version,
10+
hopper,
11+
is_ppc64le,
12+
skip_unless_feature,
13+
)
914

1015

1116
def test_sanity() -> None:
@@ -23,11 +28,8 @@ def test_sanity() -> None:
2328
@skip_unless_feature("libimagequant")
2429
def test_libimagequant_quantize() -> None:
2530
image = hopper()
26-
if is_ppc64le():
27-
version = features.version_feature("libimagequant")
28-
assert version is not None
29-
if parse_version(version) < parse_version("4"):
30-
pytest.skip("Fails with libimagequant earlier than 4.0.0 on ppc64le")
31+
if is_ppc64le() and not has_feature_version("libimagequant", "4"):
32+
pytest.skip("Fails with libimagequant earlier than 4.0.0 on ppc64le")
3133
converted = image.quantize(100, Image.Quantize.LIBIMAGEQUANT)
3234
assert converted.mode == "P"
3335
assert_image_similar(converted.convert("RGB"), image, 15)

0 commit comments

Comments
 (0)