summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiklas Mohrin <niklas.mohrin@gmail.com>2020-11-08 22:24:14 +0100
committerNiklas Mohrin <niklas.mohrin@gmail.com>2020-11-15 22:10:14 +0100
commitec60d84265037f2fa230af0317fa75b2e949c59c (patch)
tree8fa0e794116cd632a9d669e82f92b0d7780ad265
parentaa2ae19dfd505ef08a8ebc555d5fb24b0bb97c8e (diff)
Add cycle detection integration tests
-rw-r--r--tests/examples/cycle.txt0
-rw-r--r--tests/integration_tests.rs37
2 files changed, 34 insertions, 3 deletions
diff --git a/tests/examples/cycle.txt b/tests/examples/cycle.txt
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/examples/cycle.txt
diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs
index ac11efb4..ad3ca9d0 100644
--- a/tests/integration_tests.rs
+++ b/tests/integration_tests.rs
@@ -1,11 +1,14 @@
-use assert_cmd::Command;
+use assert_cmd::assert::OutputAssertExt;
+use assert_cmd::cargo::CommandCargoExt;
use predicates::{prelude::predicate, str::PredicateStrExt};
+use std::fs::File;
use std::path::Path;
+use std::process::{Command, Stdio};
use std::str::from_utf8;
const EXAMPLES_DIR: &str = "tests/examples";
-fn bat_with_config() -> Command {
+fn bat_as_std() -> Command {
let mut cmd = Command::cargo_bin("bat").unwrap();
cmd.current_dir("tests/examples");
cmd.env_remove("PAGER");
@@ -17,7 +20,11 @@ fn bat_with_config() -> Command {
cmd
}
-fn bat() -> Command {
+fn bat_with_config() -> assert_cmd::Command {
+ assert_cmd::Command::from_std(bat_as_std())
+}
+
+fn bat() -> assert_cmd::Command {
let mut cmd = bat_with_config();
cmd.arg("--no-config");
cmd
@@ -190,6 +197,30 @@ fn line_range_multiple() {
}
#[test]
+fn basic_io_cycle() {
+ let file_out = Stdio::from(File::open("tests/examples/cycle.txt").unwrap());
+ bat_as_std()
+ .arg("test.txt")
+ .arg("cycle.txt")
+ .stdout(file_out)
+ .assert()
+ .failure();
+}
+
+#[test]
+fn stdin_to_stdout_cycle() {
+ let file_out = Stdio::from(File::open("tests/examples/cycle.txt").unwrap());
+ let file_in = Stdio::from(File::open("tests/examples/cycle.txt").unwrap());
+ bat_as_std()
+ .stdin(file_in)
+ .arg("test.txt")
+ .arg("-")
+ .stdout(file_out)
+ .assert()
+ .failure();
+}
+
+#[test]
fn tabs_numbers() {
bat()
.arg("tabs.txt")