monk 0.3.4

Monk is a simple Git hooks manager written in Rust. It allows you to manage and automate Git hooks easily using a YAML configuration file.
Documentation
use monk::*;

#[test]
fn test_multiple_rust_submodules() {
    let yaml = r#"
pre-commit:
  paths:
    "api/":
      commands:
        - cargo fmt -- --check
        - cargo clippy -- -D warnings
      working_directory: "api"
    "worker/":
      commands:
        - cargo fmt -- --check
        - cargo clippy -- -D warnings
        - cargo test
      working_directory: "worker"
    "shared/":
      commands:
        - cargo fmt -- --check
        - cargo clippy -- -D warnings
      working_directory: "shared"
"#;
    let config: Config = serde_yaml::from_str(yaml).unwrap();

    let api_files = vec!["api/src/main.rs".to_string()];
    let hooks = find_matching_path_configs(&config, "pre-commit", &api_files);
    assert_eq!(hooks.len(), 1);
    assert_eq!(hooks[0].working_directory, Some("api".to_string()));

    let worker_files = vec!["worker/src/lib.rs".to_string()];
    let hooks = find_matching_path_configs(&config, "pre-commit", &worker_files);
    assert_eq!(hooks.len(), 1);
    assert_eq!(hooks[0].commands.len(), 3);

    let multiple_modules = vec![
        "api/src/main.rs".to_string(),
        "shared/src/lib.rs".to_string(),
    ];
    let hooks = find_matching_path_configs(&config, "pre-commit", &multiple_modules);
    assert_eq!(hooks.len(), 2);
}