Add cycle detection integration tests

This commit is contained in:
Niklas Mohrin 2020-11-08 22:24:14 +01:00
parent aa2ae19dfd
commit ec60d84265
No known key found for this signature in database
GPG key ID: 035A847F73CD71D6
2 changed files with 34 additions and 3 deletions

0
tests/examples/cycle.txt vendored Normal file
View file

View file

@ -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 predicates::{prelude::predicate, str::PredicateStrExt};
use std::fs::File;
use std::path::Path; use std::path::Path;
use std::process::{Command, Stdio};
use std::str::from_utf8; use std::str::from_utf8;
const EXAMPLES_DIR: &str = "tests/examples"; const EXAMPLES_DIR: &str = "tests/examples";
fn bat_with_config() -> Command { fn bat_as_std() -> Command {
let mut cmd = Command::cargo_bin("bat").unwrap(); let mut cmd = Command::cargo_bin("bat").unwrap();
cmd.current_dir("tests/examples"); cmd.current_dir("tests/examples");
cmd.env_remove("PAGER"); cmd.env_remove("PAGER");
@ -17,7 +20,11 @@ fn bat_with_config() -> Command {
cmd 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(); let mut cmd = bat_with_config();
cmd.arg("--no-config"); cmd.arg("--no-config");
cmd cmd
@ -189,6 +196,30 @@ fn line_range_multiple() {
.stdout("line 1\nline 2\nline 4\n"); .stdout("line 1\nline 2\nline 4\n");
} }
#[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] #[test]
fn tabs_numbers() { fn tabs_numbers() {
bat() bat()