dotm-rs 2.1.1

Dotfile manager with composable roles, templates, and host-specific overrides
Documentation
use dotm::loader::ConfigLoader;
use std::path::Path;

#[test]
fn load_root_config() {
    let loader = ConfigLoader::new(Path::new("tests/fixtures/basic")).unwrap();
    assert_eq!(loader.root().dotm.target, "~");
    assert_eq!(loader.root().packages.len(), 2);
}

#[test]
fn load_host_config() {
    let loader = ConfigLoader::new(Path::new("tests/fixtures/basic")).unwrap();
    let host = loader.load_host("testhost").unwrap();
    assert_eq!(host.hostname, "testhost");
    assert_eq!(host.roles, vec!["desktop", "dev"]);
}

#[test]
fn load_host_not_found() {
    let loader = ConfigLoader::new(Path::new("tests/fixtures/basic")).unwrap();
    let result = loader.load_host("nonexistent");
    assert!(result.is_err());
}

#[test]
fn load_role_config() {
    let loader = ConfigLoader::new(Path::new("tests/fixtures/basic")).unwrap();
    let role = loader.load_role("desktop").unwrap();
    assert_eq!(role.packages, vec!["shell"]);
}

#[test]
fn load_role_not_found() {
    let loader = ConfigLoader::new(Path::new("tests/fixtures/basic")).unwrap();
    let result = loader.load_role("nonexistent");
    assert!(result.is_err());
}