forked from retoor/devplacepy
feat: add container manager API, islop router, and container runtime files with vim/bot/d stealth clients
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# retoor <retoor@molodetz.nl>
|
||||
|
||||
from PIL import Image
|
||||
|
||||
from devplacepy.routers.tools.isslop import MEDIA_NAME_PATTERN
|
||||
from devplacepy.services.jobs.isslop.agent.vision import make_thumbnail
|
||||
|
||||
|
||||
def test_make_thumbnail_preserves_aspect_ratio(tmp_path):
|
||||
source = tmp_path / "wide.png"
|
||||
Image.new("RGB", (1600, 400), (255, 0, 0)).save(source)
|
||||
name = make_thumbnail(source, tmp_path / "media", "assets/wide.png")
|
||||
assert name is not None
|
||||
assert MEDIA_NAME_PATTERN.match(name)
|
||||
with Image.open(tmp_path / "media" / name) as thumb:
|
||||
assert thumb.format == "WEBP"
|
||||
assert thumb.width <= 480 and thumb.height <= 480
|
||||
assert abs(thumb.width / thumb.height - 4.0) < 0.05
|
||||
|
||||
|
||||
def test_make_thumbnail_is_deterministic_per_path(tmp_path):
|
||||
source = tmp_path / "icon.png"
|
||||
Image.new("RGBA", (256, 256), (0, 0, 255, 128)).save(source)
|
||||
first = make_thumbnail(source, tmp_path / "media", "public/icon.png")
|
||||
second = make_thumbnail(source, tmp_path / "media", "public/icon.png")
|
||||
assert first == second
|
||||
assert make_thumbnail(source, tmp_path / "media", "other/icon.png") != first
|
||||
|
||||
|
||||
def test_make_thumbnail_fails_soft_on_unreadable(tmp_path):
|
||||
source = tmp_path / "broken.png"
|
||||
source.write_bytes(b"not an image")
|
||||
assert make_thumbnail(source, tmp_path / "media", "broken.png") is None
|
||||
Reference in New Issue
Block a user