66 lines
1.9 KiB
Python
66 lines
1.9 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
|
import pytest
|
|
import transformers.image_utils
|
|
from PIL import Image
|
|
|
|
from vllm.transformers_utils.processors.pixtral import MistralCommonImageProcessor
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def image_processor() -> MistralCommonImageProcessor:
|
|
return MistralCommonImageProcessor(mm_encoder=None)
|
|
|
|
|
|
def test_fetch_images_passes_through_decoded_image(
|
|
image_processor: MistralCommonImageProcessor,
|
|
):
|
|
image = Image.new("RGB", (4, 4))
|
|
result = image_processor.fetch_images(image)
|
|
assert result is image
|
|
|
|
|
|
def test_fetch_images_recurses_over_list(
|
|
image_processor: MistralCommonImageProcessor,
|
|
):
|
|
a = Image.new("RGB", (4, 4))
|
|
b = Image.new("RGB", (8, 8))
|
|
result = image_processor.fetch_images([a, b])
|
|
assert isinstance(result, list)
|
|
assert len(result) == 2
|
|
assert result[0] is a
|
|
assert result[1] is b
|
|
|
|
|
|
def test_fetch_images_recurses_over_nested_list(
|
|
image_processor: MistralCommonImageProcessor,
|
|
):
|
|
a = Image.new("RGB", (4, 4))
|
|
b = Image.new("RGB", (8, 8))
|
|
result = image_processor.fetch_images([[a], [b]])
|
|
assert result == [[a], [b]]
|
|
|
|
|
|
def test_fetch_images_str_delegates_to_load_image(
|
|
monkeypatch, image_processor: MistralCommonImageProcessor
|
|
):
|
|
sentinel = Image.new("RGB", (2, 2))
|
|
received: dict[str, object] = {}
|
|
|
|
def fake_load_image(path):
|
|
received["path"] = path
|
|
return sentinel
|
|
|
|
monkeypatch.setattr(transformers.image_utils, "load_image", fake_load_image)
|
|
|
|
result = image_processor.fetch_images("/tmp/fake.png")
|
|
assert result is sentinel
|
|
assert received["path"] == "/tmp/fake.png"
|
|
|
|
|
|
def test_fetch_images_rejects_unsupported_type(
|
|
image_processor: MistralCommonImageProcessor,
|
|
):
|
|
with pytest.raises(TypeError, match="only a single or a list"):
|
|
image_processor.fetch_images(42)
|