#![allow(clippy::expect_used, clippy::unwrap_used)] use assert_cmd::prelude::*; use std::fs; use std::process::Command; use tempfile::tempdir; #[test] fn test_apply_patch_cli_add_and_update() -> anyhow::Result<()> { let tmp = tempdir()?; let file = "cli_test.txt"; let absolute_path = tmp.path().join(file); // 1) Add a file let add_patch = format!( r#"*** Begin Patch *** Add File: {file} +hello *** End Patch"# ); Command::cargo_bin("apply-patch") .expect("should find apply-patch binary") .arg(add_patch) .current_dir(tmp.path()) .assert() .success() .stdout(format!("Success. Updated the following files:\nA {file}\n")); assert_eq!(fs::read_to_string(&absolute_path)?, "hello\n"); // 2) Update the file let update_patch = format!( r#"*** Begin Patch *** Update File: {file} @@ -hello +world *** End Patch"# ); Command::cargo_bin("apply-patch") .expect("should find apply-patch binary") .arg(update_patch) .current_dir(tmp.path()) .assert() .success() .stdout(format!("Success. Updated the following files:\nM {file}\n")); assert_eq!(fs::read_to_string(&absolute_path)?, "world\n"); Ok(()) }