use assert_cmd::Command; use std::fs; use tempfile::tempdir; #[test] fn plan_mode_allows_read_operations() { // Create a temp file to read let dir = tempdir().unwrap(); let file = dir.path().join("test.txt"); fs::write(&file, "hello world").unwrap(); // Read operation should work in plan mode (default) let mut cmd = Command::new(assert_cmd::cargo::cargo_bin!("owlen")); cmd.arg("read").arg(file.to_str().unwrap()); cmd.assert().success().stdout("hello world\n"); } #[test] fn plan_mode_allows_glob_operations() { let dir = tempdir().unwrap(); fs::write(dir.path().join("a.txt"), "test").unwrap(); fs::write(dir.path().join("b.txt"), "test").unwrap(); let pattern = format!("{}/*.txt", dir.path().display()); // Glob operation should work in plan mode (default) let mut cmd = Command::new(assert_cmd::cargo::cargo_bin!("owlen")); cmd.arg("glob").arg(&pattern); cmd.assert().success(); } #[test] fn plan_mode_allows_grep_operations() { let dir = tempdir().unwrap(); fs::write(dir.path().join("test.txt"), "hello world\nfoo bar").unwrap(); // Grep operation should work in plan mode (default) let mut cmd = Command::new(assert_cmd::cargo::cargo_bin!("owlen")); cmd.arg("grep").arg(dir.path().to_str().unwrap()).arg("hello"); cmd.assert().success(); } #[test] fn mode_override_via_cli_flag() { let dir = tempdir().unwrap(); let file = dir.path().join("test.txt"); fs::write(&file, "content").unwrap(); // Test with --mode code (should also allow read) let mut cmd = Command::new(assert_cmd::cargo::cargo_bin!("owlen")); cmd.arg("--mode") .arg("code") .arg("read") .arg(file.to_str().unwrap()); cmd.assert().success().stdout("content\n"); }