z-image-studio / tests /test_app.py
techfreakworm's picture
test: update _on_model_change asserts for new 3-tuple return shape
e3764fc unverified
import app
def test_on_model_change_returns_base_defaults():
steps, cfg, _lora_update = app._on_model_change("Base")
assert (steps, cfg) == (25, 4.0)
def test_on_model_change_returns_turbo_defaults():
steps, cfg, _lora_update = app._on_model_change("Turbo")
assert (steps, cfg) == (8, 1.0)
def test_on_model_change_unknown_falls_back_to_turbo():
steps, cfg, _lora_update = app._on_model_change("Edit")
assert (steps, cfg) == (8, 1.0)
def test_on_model_change_emits_lora_label_hinting_model_compat():
"""Third element is a gr.update on the LoRA toggle whose label names the model."""
*_, base_update = app._on_model_change("Base")
*_, turbo_update = app._on_model_change("Turbo")
# gr.update returns a dict-like with the keyword args; both styles seen in Gradio 5.
base_label = getattr(base_update, "get", lambda *_: None)("label") or getattr(base_update, "label", None)
turbo_label = getattr(turbo_update, "get", lambda *_: None)("label") or getattr(turbo_update, "label", None)
assert base_label and "Z-Image" in base_label and "Turbo" not in base_label
assert turbo_label and "Z-Image-Turbo" in turbo_label
def test_preview_cn_returns_none_when_no_image():
assert app._preview_cn(None, "Canny") is None
def test_preview_cn_falls_back_to_input_on_error():
"""If the preprocessor raises (e.g. missing optional dep), pass-through."""
from PIL import Image
img = Image.new("RGB", (16, 16), "white")
# "BogusMode" raises ValueError inside preprocessors.run — _preview_cn should
# swallow it and return the raw input.
out = app._preview_cn(img, "BogusMode")
assert out is img