mur-common 2.92.0

Shared types and traits for the MUR ecosystem
Documentation
use super::*;
use tempfile::tempdir;

#[test]
fn load_returns_empty_when_file_missing() {
    let dir = tempdir().unwrap();
    let r = ModelRegistry::load_from(&dir.path().join("nope.yaml")).unwrap();
    assert_eq!(r.models.len(), 0);
    assert_eq!(r.schema_version, 1);
}

#[test]
fn save_then_load_round_trips() {
    let dir = tempdir().unwrap();
    let p = dir.path().join("models.yaml");
    let mut r = ModelRegistry::default();
    r.models.insert(
        "x".into(),
        ModelEntry {
            provider: "ollama".into(),
            model: "llama3.2:3b".into(),
            base_url: None,
            secret: None,
            capabilities: vec![],
            params: serde_json::Value::Null,
            tier: None,
            cost_per_1k_tokens: None,
            input_cost_per_1k: None,
            output_cost_per_1k: None,
            context_window: None,
            priced_at: None,
            ..Default::default()
        },
    );
    r.save_to(&p).unwrap();
    let r2 = ModelRegistry::load_from(&p).unwrap();
    assert_eq!(r, r2);
}

#[test]
fn save_uses_atomic_rename() {
    let dir = tempdir().unwrap();
    let p = dir.path().join("models.yaml");
    ModelRegistry::default().save_to(&p).unwrap();
    let temp = dir.path().join("models.yaml.tmp");
    assert!(!temp.exists(), "atomic temp left behind");
}