Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Add an integration test for reading data from stdin
  • Loading branch information
oSoMoN committed Apr 2, 2024
commit 6a152cdc7f203408331c3e337a86b2200303e1a3
46 changes: 44 additions & 2 deletions tests/integration.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -161,3 +160,46 @@ fn missing_newline() -> Result<(), Box<dyn std::error::Error>> {
.stderr(predicate::str::starts_with("No newline at end of file"));
Ok(())
}

#[test]
fn read_from_stdin() -> Result<(), Box<dyn std::error::Error>> {
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(())
}