From 6a152cdc7f203408331c3e337a86b2200303e1a3 Mon Sep 17 00:00:00 2001 From: Olivier Tilloy Date: Tue, 2 Apr 2024 22:34:42 +0200 Subject: [PATCH] Add an integration test for reading data from stdin --- tests/integration.rs | 46 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/tests/integration.rs b/tests/integration.rs index be1320e..5ad624e 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -3,10 +3,9 @@ // For the full copyright and license information, please view the LICENSE-* // files that was distributed with this source code. -use assert_cmd::prelude::*; +use assert_cmd::cmd::Command; use predicates::prelude::*; use std::io::Write; -use std::process::Command; use tempfile::NamedTempFile; // Integration tests for the diffutils command @@ -161,3 +160,46 @@ fn missing_newline() -> Result<(), Box> { .stderr(predicate::str::starts_with("No newline at end of file")); Ok(()) } + +#[test] +fn read_from_stdin() -> Result<(), Box> { + let mut file1 = NamedTempFile::new()?; + file1.write_all("foo\n".as_bytes())?; + let mut file2 = NamedTempFile::new()?; + file2.write_all("bar\n".as_bytes())?; + + let mut cmd = Command::cargo_bin("diffutils")?; + cmd.arg("-u") + .arg(file1.path()) + .arg("-") + .write_stdin("bar\n"); + cmd.assert() + .code(predicate::eq(1)) + .failure() + .stdout(predicate::eq(format!( + "--- {}\t\n+++ /dev/stdin\t\n@@ -1 +1 @@\n-foo\n+bar\n", + file1.path().to_string_lossy() + ))); + + let mut cmd = Command::cargo_bin("diffutils")?; + cmd.arg("-u") + .arg("-") + .arg(file2.path()) + .write_stdin("foo\n"); + cmd.assert() + .code(predicate::eq(1)) + .failure() + .stdout(predicate::eq(format!( + "--- /dev/stdin\t\n+++ {}\t\n@@ -1 +1 @@\n-foo\n+bar\n", + file2.path().to_string_lossy() + ))); + + let mut cmd = Command::cargo_bin("diffutils")?; + cmd.arg("-u").arg("-").arg("-").write_stdin("foo\n"); + cmd.assert() + .code(predicate::eq(0)) + .success() + .stdout(predicate::str::is_empty()); + + Ok(()) +}