#[cfg(test)]
mod cleanup_tests {
use std::path::PathBuf;
fn cleanup_worktrees(paths: &[PathBuf]) -> Result<Vec<PathBuf>, String> {
let mut cleaned = Vec::new();
for path in paths {
if path.exists() {
cleaned.push(path.clone());
}
}
Ok(cleaned)
}
#[test]
fn test_cleanup_empty_list() {
let paths: Vec<PathBuf> = vec![];
let result = cleanup_worktrees(&paths);
assert!(result.is_ok());
assert_eq!(result.unwrap().len(), 0);
}
#[test]
fn test_cleanup_single_path() {
let paths = vec![PathBuf::from("/tmp")];
let result = cleanup_worktrees(&paths);
assert!(result.is_ok());
let cleaned = result.unwrap();
assert_eq!(cleaned.len(), 1);
assert_eq!(cleaned[0], PathBuf::from("/tmp"));
}
#[test]
fn test_cleanup_multiple_paths() {
let paths = vec![
PathBuf::from("/tmp"),
PathBuf::from("/var"),
PathBuf::from("/usr"),
];
let result = cleanup_worktrees(&paths);
assert!(result.is_ok());
let cleaned = result.unwrap();
assert!(cleaned.len() <= 3);
}
#[test]
fn test_cleanup_with_duplicates() {
let paths = vec![
PathBuf::from("/tmp"),
PathBuf::from("/tmp"),
PathBuf::from("/var"),
];
let result = cleanup_worktrees(&paths);
assert!(result.is_ok());
let cleaned = result.unwrap();
assert!(cleaned.len() <= paths.len());
}
#[test]
fn test_cleanup_invalid_paths() {
let paths = vec![
PathBuf::from("/nonexistent/path/that/does/not/exist"),
PathBuf::from("/another/invalid/path"),
];
let result = cleanup_worktrees(&paths);
assert!(result.is_ok());
let cleaned = result.unwrap();
assert_eq!(cleaned.len(), 0);
}
#[test]
fn test_cleanup_mixed_valid_invalid() {
let paths = vec![
PathBuf::from("/tmp"),
PathBuf::from("/nonexistent/path"),
PathBuf::from("/usr"),
];
let result = cleanup_worktrees(&paths);
assert!(result.is_ok());
let cleaned = result.unwrap();
assert!(cleaned.len() <= 2);
}
#[test]
fn test_cleanup_handles_errors() {
let paths = vec![PathBuf::from("")];
let result = cleanup_worktrees(&paths);
assert!(result.is_ok()); }
#[test]
fn test_cleanup_preserves_order() {
let paths = vec![
PathBuf::from("/a"),
PathBuf::from("/b"),
PathBuf::from("/c"),
];
let result = cleanup_worktrees(&paths);
assert!(result.is_ok());
}
}