test_assets.py•1.96 kB
from pathlib import Path
import pytest
from comfyui_mcp.assets import AssetCatalog
from comfyui_mcp.config import DirectorySettings
def test_asset_catalog_scans_directories(tmp_path: Path) -> None:
checkpoints = tmp_path / "checkpoints"
checkpoints.mkdir()
(checkpoints / "model.safetensors").write_text("dummy")
(checkpoints / "notes.txt").write_text("ignore")
loras = tmp_path / "loras"
loras.mkdir()
(loras / "style.safetensors").write_text("dummy")
directories = DirectorySettings(
checkpoints=checkpoints,
loras=loras,
vaes=None,
text_encoders=None,
embeddings=None,
)
catalog = AssetCatalog(directories, base_path=tmp_path)
assets = catalog.list()
assert assets["checkpoints"] == ["model.safetensors"]
assert assets["loras"] == ["style.safetensors"]
assert assets["vaes"] == []
def test_asset_validation_and_suggestions(tmp_path: Path) -> None:
checkpoints = tmp_path / "checkpoints"
checkpoints.mkdir()
(checkpoints / "model.safetensors").write_text("dummy")
directories = DirectorySettings(
checkpoints=checkpoints,
loras=None,
vaes=None,
text_encoders=None,
embeddings=None,
)
catalog = AssetCatalog(directories, base_path=tmp_path)
catalog.ensure_exists("checkpoints", "model.safetensors")
with pytest.raises(KeyError) as exc:
catalog.ensure_exists("checkpoints", "model")
assert "model" in str(exc.value)
assert "model.safetensors" in str(exc.value)
with pytest.raises(ValueError):
catalog.ensure_exists("checkpoints", "../model.safetensors")
def test_validate_directories_requires_existing_paths(tmp_path: Path) -> None:
directories = DirectorySettings(checkpoints=tmp_path / "missing")
catalog = AssetCatalog(directories, base_path=tmp_path)
with pytest.raises(FileNotFoundError):
catalog.validate_directories()