use freneng::RenamingEngine;
use std::path::PathBuf;
#[tokio::main]
async fn main() {
let engine = RenamingEngine;
let frentui_dir = PathBuf::from("/home/byezy/development/RustroverProjects/fren/frentui");
let files = vec![
frentui_dir.join("Cargo.toml"),
frentui_dir.join("README.md"),
frentui_dir.join(".gitignore"),
frentui_dir.join("Cargo.lock"),
frentui_dir.join("FIXES_SUMMARY.md"),
];
let existing_files: Vec<_> = files.iter()
.filter(|f| f.exists())
.cloned()
.collect();
println!("Testing validation on {} files from frentui directory:", existing_files.len());
for file in &existing_files {
println!(" - {}", file.display());
}
println!();
let preview = match engine.generate_preview(&existing_files, "%N.%E").await {
Ok(p) => p,
Err(e) => {
eprintln!("Error generating preview: {}", e);
return;
}
};
println!("Generated {} renames", preview.renames.len());
println!();
let validation = engine.validate(&preview.renames, false).await;
println!("Validation Results:");
println!(" Valid: {}", validation.valid.len());
println!(" Issues: {}", validation.issues.len());
println!();
if !validation.issues.is_empty() {
println!("Issues found:");
for (path, issue) in &validation.issues {
println!(" {}: {:?}", path.display(), issue);
}
} else {
println!("✓ All files validated successfully - no ParentNotWritable errors!");
}
let parent_not_writable_count = validation.issues.iter()
.filter(|(_, issue)| matches!(issue, freneng::ValidationIssue::ParentNotWritable(_)))
.count();
if parent_not_writable_count > 0 {
println!();
println!("❌ BUG STILL EXISTS: Found {} ParentNotWritable errors", parent_not_writable_count);
for (path, issue) in &validation.issues {
if matches!(issue, freneng::ValidationIssue::ParentNotWritable(_)) {
println!(" {}: {:?}", path.display(), issue);
}
}
} else {
println!();
println!("✓ BUG FIXED: No ParentNotWritable errors found");
}
}