acorn-lib 0.3.2

ACORN library
use super::super::{goose::Config, McpSync};
use acorn_schema::agent::ModelDetails;
use serde_norway::Value;
use std::env::current_exe;

#[test]
fn test_upsert_mcp_preserves_providers_and_extensions() {
    let executable = current_exe().expect("current test executable");
    let existing: Value = serde_norway::from_str("providers:\n  anthropic:\n    enabled: true\nextensions:\n  other:\n    type: stdio\n").unwrap();
    let updated = Config::default().upsert_mcp(existing, &executable, false).expect("upsert MCP");
    let rendered = serde_norway::to_string(&updated).unwrap();
    assert!(rendered.contains("anthropic:"));
    assert!(rendered.contains("other:"));
    assert!(rendered.contains("acorn:"));
    assert!(rendered.contains(executable.to_string_lossy().as_ref()));
}
#[test]
fn test_upsert_preserves_unrelated_settings_and_provider_fields() {
    let existing: Value =
        serde_norway::from_str("GOOSE_MODE: approve\nproviders:\n  anthropic:\n    enabled: true\n  openai:\n    custom: retained\n").unwrap();
    let models = [ModelDetails::init().id("qwen").build()];
    let updated = Config::default().upsert(existing, &models).unwrap();
    let rendered = serde_norway::to_string(&updated).unwrap();
    assert!(rendered.contains("GOOSE_MODE: approve"));
    assert!(rendered.contains("anthropic:"));
    assert!(rendered.contains("custom: retained"));
    assert!(rendered.contains("model: qwen"));
    assert!(rendered.contains("OPENAI_BASE_PATH: v1/chat/completions"));
}