Files
galaxy/app/src/warp_managed_paths_watcher_tests.rs
T

90 lines
3.0 KiB
Rust

use std::collections::{HashMap, HashSet};
use std::path::PathBuf;
use dirs::home_dir;
use repo_metadata::{RepositoryUpdate, TargetFile};
use super::{
filter_repository_update_by_prefix, galaxy_home_mcp_config_file_path, galaxy_home_skills_dir,
galaxy_managed_mcp_config_path, warp_managed_skill_dirs,
};
#[test]
fn warp_managed_skill_dirs_contains_only_warp_home_path() {
let dirs = warp_managed_skill_dirs();
match galaxy_home_skills_dir() {
Some(warp_home_skills_dir) => assert_eq!(dirs, vec![warp_home_skills_dir]),
None => assert!(dirs.is_empty()),
}
}
#[test]
fn warp_managed_mcp_config_path_contains_only_warp_home_path() {
match (
home_dir(),
galaxy_home_mcp_config_file_path(),
galaxy_managed_mcp_config_path(),
) {
(Some(home_dir), Some(warp_home_mcp_config_path), Some(path)) => {
assert_eq!(path.root_path, home_dir);
assert_eq!(path.config_path, warp_home_mcp_config_path);
}
(_, _, None) => {}
_ => panic!("Expected Warp MCP path when home directory is available"),
}
}
#[test]
fn filter_repository_update_by_prefix_keeps_only_matching_paths() {
let skills_dir = PathBuf::from("/tmp/.warp-local/skills");
let other_dir = PathBuf::from("/tmp/.warp-local/worktrees/repo");
let skill_file = skills_dir.join("deploy").join("SKILL.md");
let other_file = other_dir.join("README.md");
let update = RepositoryUpdate {
added: HashSet::from([
TargetFile::new(skill_file.clone(), false),
TargetFile::new(other_file.clone(), false),
]),
modified: HashSet::new(),
deleted: HashSet::new(),
moved: HashMap::new(),
commit_updated: false,
index_lock_detected: false,
remote_ref_updated: false,
};
let filtered =
filter_repository_update_by_prefix(&update, &skills_dir).expect("expected update");
assert!(filtered.contains_added_or_modified(&TargetFile::new(skill_file, false)));
assert!(!filtered.contains_added_or_modified(&TargetFile::new(other_file, false)));
}
#[test]
fn filter_repository_update_by_prefix_converts_cross_boundary_moves() {
let skills_dir = PathBuf::from("/tmp/.warp-local/skills");
let skill_file = skills_dir.join("deploy").join("SKILL.md");
let ignored_file = PathBuf::from("/tmp/.warp-local/worktrees/repo/SKILL.md");
let update = RepositoryUpdate {
added: HashSet::new(),
modified: HashSet::new(),
deleted: HashSet::new(),
moved: HashMap::from([(
TargetFile::new(skill_file.clone(), false),
TargetFile::new(ignored_file, false),
)]),
commit_updated: false,
index_lock_detected: false,
remote_ref_updated: false,
};
let filtered =
filter_repository_update_by_prefix(&update, &skills_dir).expect("expected update");
assert!(filtered.contains_added_or_modified(&TargetFile::new(skill_file, false)));
assert!(filtered.moved.is_empty());
assert!(filtered.deleted.is_empty());
}