use assert_cmd::Command;
use predicates::prelude::*;
fn test_command() -> Command {
let mut cmd = Command::cargo_bin("rox").unwrap();
cmd.arg("-f").arg("tests/files/test_roxfile.yml");
cmd
}
#[test]
fn dies_no_args() {
let mut cmd = Command::cargo_bin("rox").unwrap();
cmd.assert()
.failure()
.stderr(predicate::str::contains("Usage"));
}
#[test]
fn help_succeeds() {
test_command()
.arg("help")
.assert()
.success()
.stdout(predicate::str::contains("Usage"));
}
#[test]
fn task_succeeds() {
test_command().arg("task").arg("passing").assert().success();
}
#[test]
fn pipeline_succeeds_single_stage() {
test_command()
.arg("pl")
.arg("passing_single")
.assert()
.success();
}
#[test]
fn pipeline_succeeds_multi_stage() {
test_command()
.arg("pl")
.arg("passing_multi")
.assert()
.success();
}
#[test]
fn pipeline_succeeds_parallel() {
test_command()
.arg("pl")
.arg("-p")
.arg("passing_single")
.assert()
.success();
}
#[test]
fn serial_processing_time() {
let expected = "> Total elapsed time: 4s";
test_command()
.arg("pl")
.arg("sleep_multi")
.assert()
.success()
.stdout(predicate::str::contains(expected));
}
#[test]
fn parallel_processing_time() {
let expected = "> Total elapsed time: 3s";
test_command()
.arg("pl")
.arg("-p")
.arg("sleep_multi")
.assert()
.success()
.stdout(predicate::str::contains(expected));
}
#[test]
fn hidden_task() {
let expected = "hidden";
test_command()
.arg("task")
.arg("-h")
.assert()
.success()
.stdout(predicate::str::contains(expected).count(0));
}