use std::fs;
use std::path::Path;
#[cfg(target_os = "linux")]
use crate::completion::generate_completion_zsh;
#[cfg(target_os = "linux")]
use std::io::Cursor;
fn cleanup() {
if let Ok(home_dir) = std::env::var("HOME") {
let completion_file = format!("{}/.zfunc/_cargo-make", home_dir);
println!("\n\n\n\n{}\n\n\n\n", completion_file);
if Path::new(&completion_file).exists() {
fs::remove_file(&completion_file).expect("Failed to clean up test file");
}
}
}
#[test]
#[ignore]
fn test_generate_completion_zsh_empty_test() {
cleanup();
}
#[test]
#[ignore]
#[cfg(target_os = "linux")]
fn test_generate_completion_zsh_overwrite_prompt_yes() {
cleanup();
let input = b"y\n"; let mut reader = Cursor::new(input);
let result = generate_completion_zsh(Some(&mut reader));
assert!(result.is_ok());
}
#[test]
#[ignore]
#[cfg(target_os = "linux")]
fn test_generate_completion_zsh_overwrite_prompt_no() {
cleanup(); let input = b"n\n"; let mut reader = Cursor::new(input);
let result = generate_completion_zsh(Some(&mut reader));
assert!(result.is_ok());
}
#[test]
#[ignore]
#[cfg(target_os = "linux")]
fn test_generate_completion_zsh_creates_directory() {
cleanup();
let input = b"y\n"; let mut reader = Cursor::new(input);
let result = generate_completion_zsh(Some(&mut reader));
assert!(result.is_ok(), "Should succeed in generating completions");
let home_dir = std::env::var("HOME").expect("Failed to get HOME");
let zfunc_dir = format!("{}/.zfunc", home_dir);
assert!(
Path::new(&zfunc_dir).exists(),
"The zfunc directory should exist"
);
}
#[test]
#[ignore]
#[cfg(target_os = "linux")]
fn test_generate_completion_zsh_creates_file() {
cleanup();
let input = b"y\n"; let mut reader = Cursor::new(input);
let result = generate_completion_zsh(Some(&mut reader));
assert!(result.is_ok(), "Should succeed in generating completions");
let home_dir = std::env::var("HOME").expect("Failed to get HOME");
let completion_file = format!("{}/.zfunc/_cargo-make", home_dir);
assert!(
Path::new(&completion_file).exists(),
"The completion file should exist"
);
}
#[test]
#[ignore]
#[cfg(target_os = "linux")]
fn test_generate_completion_zsh_overwrite_prompt() {
cleanup();
let input = b"y\n"; let mut reader = Cursor::new(input);
generate_completion_zsh(Some(&mut reader)).expect("Should succeed in generating completions");
let input = b"y\n"; let mut reader = Cursor::new(input);
let result = generate_completion_zsh(Some(&mut reader));
assert!(result.is_ok(), "Should handle overwrite prompt gracefully");
}