use {
super::super::*,
std::path::{Path, PathBuf},
};
#[test]
fn test_recovery_dir() {
let dir = recovery_dir();
assert!(dir.ends_with("recovery"));
}
#[test]
fn test_save_buffer_for_recovery() {
let content = "line 1\nline 2\nline 3";
let result = save_buffer_for_recovery(999, Some(Path::new("/tmp/test.txt")), content);
assert!(result.is_ok());
let path = result.unwrap();
assert!(path.exists());
let saved = std::fs::read_to_string(&path).unwrap();
assert!(saved.contains("buffer 999"));
assert!(saved.contains("/tmp/test.txt"));
assert!(saved.contains("Lines: 3"));
assert!(saved.contains(content));
std::fs::remove_file(&path).ok();
}
#[test]
#[cfg_attr(coverage_nightly, coverage(off))]
fn test_list_recovery_files_empty() {
let test_dir = std::env::temp_dir().join("reovim_test_recovery_list");
if test_dir.exists() {
std::fs::remove_dir_all(&test_dir).ok();
}
let files = list_recovery_files();
assert!(files.is_ok());
}
#[test]
fn test_save_buffer_for_recovery_no_path() {
let content = "no path buffer content";
let result = save_buffer_for_recovery(888, None, content);
assert!(result.is_ok());
let path = result.unwrap();
assert!(path.exists());
let saved = std::fs::read_to_string(&path).unwrap();
assert!(saved.contains("buffer 888"));
assert!(!saved.contains("Original path"));
assert!(saved.contains(content));
std::fs::remove_file(&path).ok();
}
#[test]
fn test_list_recovery_files_with_files() {
let content = "test list content";
let result = save_buffer_for_recovery(777, Some(Path::new("/tmp/list_test.rs")), content);
assert!(result.is_ok());
let saved_path = result.unwrap();
let files = list_recovery_files().unwrap();
assert!(!files.is_empty());
std::fs::remove_file(&saved_path).ok();
}
#[test]
fn test_cleanup_old_recovery_files() {
let content = "cleanup test content";
let result = save_buffer_for_recovery(666, Some(Path::new("/tmp/cleanup.rs")), content);
assert!(result.is_ok());
let saved_path = result.unwrap();
let removed = cleanup_old_recovery_files(999_999).unwrap();
let _ = removed;
std::fs::remove_file(&saved_path).ok();
}
#[test]
fn test_recovery_snapshot_debug() {
let snapshot = RecoverySnapshot {
unsaved_buffers: vec![UnsavedBuffer {
id: 1,
path: Some(PathBuf::from("/test.rs")),
content_hash: 12345,
line_count: 42,
}],
timestamp: std::time::SystemTime::now(),
};
let debug = format!("{snapshot:?}");
assert!(debug.contains("RecoverySnapshot"));
assert!(debug.contains("UnsavedBuffer"));
}
#[test]
fn test_save_buffer_with_original_path_exercises_some_branch() {
let content = "fn hello() {}";
let result =
save_buffer_for_recovery(111, Some(Path::new("/home/user/project/hello.rs")), content);
if result.is_err() {
return;
}
let path = result.unwrap();
let saved = std::fs::read_to_string(&path).unwrap();
assert!(saved.contains("# Original path: /home/user/project/hello.rs"));
assert!(saved.contains("buffer 111"));
assert!(saved.contains(content));
std::fs::remove_file(&path).ok();
}
#[test]
fn test_save_buffer_without_original_path_exercises_none_branch() {
let content = "scratch content";
let result = save_buffer_for_recovery(222, None, content);
if result.is_err() {
return;
}
let path = result.unwrap();
let saved = std::fs::read_to_string(&path).unwrap();
assert!(!saved.contains("# Original path:"));
assert!(saved.contains("buffer 222"));
assert!(saved.contains(content));
std::fs::remove_file(&path).ok();
}