use std::fs::{self, File};
use std::io::Write;
use std::path::Path;
use tempfile::tempdir;
use depup::utils;
#[test]
fn test_is_command_available() {
assert!(utils::is_command_available("ls"));
assert!(!utils::is_command_available(
"this_command_does_not_exist_12345"
));
}
#[test]
fn test_ensure_backups_in_gitignore() {
let temp_dir = tempdir().unwrap();
let temp_path = temp_dir.path();
fs::create_dir(temp_path.join(".git")).unwrap();
assert!(utils::ensure_backups_in_gitignore(temp_path).is_ok());
let gitignore_content = fs::read_to_string(temp_path.join(".gitignore")).unwrap();
assert!(gitignore_content.contains("*.backup"));
let mut file = File::create(temp_path.join(".gitignore")).unwrap();
writeln!(file, "node_modules/").unwrap();
assert!(utils::ensure_backups_in_gitignore(temp_path).is_ok());
let gitignore_content = fs::read_to_string(temp_path.join(".gitignore")).unwrap();
assert!(gitignore_content.contains("node_modules/"));
assert!(gitignore_content.contains("*.backup"));
let non_git_dir = tempdir().unwrap();
assert!(utils::ensure_backups_in_gitignore(non_git_dir.path()).is_ok());
assert!(!Path::new(&non_git_dir.path().join(".gitignore")).exists());
}