diff --git a/src/tests.rs b/src/tests.rs index 5f530ff..711ff36 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -256,4 +256,59 @@ mod tests { //assert!(!output.status.success(), "Command succeded when it should have failed: {} RC={}", cmd, output.status); }); } + + // Test: Diff two items and verify the output + #[test] + fn test_diff_items() { + with_temp_env(|data_dir| { + // Create test items with the common environment setup + create_test_items(data_dir); + + let env = format!("KEEP_DIR={} cargo run --", data_dir.display()); + + let cmd = format!("{} --diff 1 2", env); + let output = run_sh(cmd.as_str()); + assert!( + output.status.success(), + "Command failed: {} RC={}", + cmd, + output.status + ); + assert!(String::from_utf8_lossy(&output.stdout).contains("test content A")); + assert!(String::from_utf8_lossy(&output.stdout).contains("test content B")); + + let cmd = format!("{} --diff tag_a tag_b", env); + let output = run_sh(cmd.as_str()); + assert!( + output.status.success(), + "Command failed: {} RC={}", + cmd, + output.status + ); + assert!(String::from_utf8_lossy(&output.stdout).contains("test content A")); + assert!(String::from_utf8_lossy(&output.stdout).contains("test content B")); + + let cmd = format!("{} --diff tag_a 2", env); + let output = run_sh(cmd.as_str()); + assert!( + output.status.success(), + "Command failed: {} RC={}", + cmd, + output.status + ); + assert!(String::from_utf8_lossy(&output.stdout).contains("test content A")); + assert!(String::from_utf8_lossy(&output.stdout).contains("test content B")); + + let cmd = format!("{} --diff 9999 2", env); + let output = run_sh(cmd.as_str()); + assert!( + output.status.success(), + "Command failed: {} RC={}", + cmd, + output.status + ); + // Output should be empty for non-existent item + assert!(String::from_utf8_lossy(&output.stdout).is_empty()); + }); + } }