Zum Inhalt

tests/test_client_probe.py

from touchstone.client import BuildMetadata, parse_lmstudio_models


def test_parse_lmstudio_models_extracts_quant_and_runtime():
    payload = {
        "data": [
            {"id": "google/gemma-4-12b-qat", "compatibility_type": "mlx", "quantization": "4bit"},
            {"id": "qwen/q", "compatibility_type": "gguf", "quantization": "Q4_K_M"},
        ]
    }
    meta = parse_lmstudio_models(payload)
    assert isinstance(meta, BuildMetadata)
    assert meta.runtime == "mlx"  # first/dominant runtime
    assert meta.quant_by_model["google/gemma-4-12b-qat"] == "4bit"


def test_parse_lmstudio_models_empty_on_garbage():
    meta = parse_lmstudio_models({"unexpected": True})
    assert meta.runtime is None
    assert meta.quant_by_model == {}


def test_parse_lmstudio_models_lists_only_loaded_with_quant():
    payload = {
        "data": [
            {"id": "q@4bit", "state": "loaded", "quantization": "4bit", "loaded_context_length": 8},
            {"id": "q", "state": "not-loaded", "quantization": "4bit"},
        ]
    }
    meta = parse_lmstudio_models(payload)
    assert meta.loaded == [{"id": "q@4bit", "quantization": "4bit", "loaded_context_length": 8}]
    assert set(meta.quant_by_model) == {"q@4bit", "q"}