Fix(test): Compare results to GNU echo
- Added new TestResult type - Automated 5 testing cases with bash script
This commit is contained in:
parent
9f673b28b4
commit
0736d6e81a
9
mk-outs.sh
Executable file
9
mk-outs.sh
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
OUTDIR="tests/expected"
|
||||||
|
[[ ! -d "$OUTDIR" ]] && mkdir -p "$OUTDIR"
|
||||||
|
|
||||||
|
echo "Hello there" > $OUTDIR/hello1.txt
|
||||||
|
echo "Hello" "there" > $OUTDIR/hello2.txt
|
||||||
|
echo -n "Hello there" > $OUTDIR/hello1.n.txt
|
||||||
|
echo -n "Hello" "there" > $OUTDIR/hello2.n.txt
|
37
tests/cli.rs
37
tests/cli.rs
@ -1,18 +1,43 @@
|
|||||||
use assert_cmd::Command;
|
use assert_cmd::Command;
|
||||||
use predicates::prelude::*;
|
use predicates::prelude::*;
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
|
type TestResult = Result<(), Box<dyn std::error::Error>>;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn dies_no_args() {
|
fn dies_no_args() -> TestResult {
|
||||||
let mut cmd = Command::cargo_bin("echor").expect("cargo binary error");
|
let mut cmd = Command::cargo_bin("echor")?;
|
||||||
|
|
||||||
cmd.assert()
|
cmd.assert()
|
||||||
.failure()
|
.failure()
|
||||||
.stderr(predicate::str::contains("Usage"));
|
.stderr(predicate::str::contains("Usage"));
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn run(args: &[&str], expected_file: &str) -> TestResult {
|
||||||
|
let expected = fs::read_to_string(expected_file)?;
|
||||||
|
Command::cargo_bin("echor")?
|
||||||
|
.args(args)
|
||||||
|
.assert()
|
||||||
|
.success()
|
||||||
|
.stdout(expected);
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn runs() {
|
fn hello1() -> TestResult {
|
||||||
let mut cmd = Command::cargo_bin("echor").expect("cargo binary error");
|
run(&["Hello there"], "tests/expected/hello1.txt")
|
||||||
|
}
|
||||||
cmd.arg("hello").assert().success();
|
#[test]
|
||||||
|
fn hello2() -> TestResult {
|
||||||
|
run(&["Hello", "there"], "tests/expected/hello2.txt")
|
||||||
|
}
|
||||||
|
#[test]
|
||||||
|
fn hello1_no_newline() -> TestResult {
|
||||||
|
run(&["Hello there", "-n"], "tests/expected/hello1.n.txt")
|
||||||
|
}
|
||||||
|
#[test]
|
||||||
|
fn hello2_no_newline() -> TestResult {
|
||||||
|
run(&["-n", "Hello", "there"], "tests/expected/hello2.n.txt")
|
||||||
}
|
}
|
||||||
|
1
tests/expected/hello1.n.txt
Normal file
1
tests/expected/hello1.n.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
Hello there
|
1
tests/expected/hello1.txt
Normal file
1
tests/expected/hello1.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
Hello there
|
1
tests/expected/hello2.n.txt
Normal file
1
tests/expected/hello2.n.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
Hello there
|
1
tests/expected/hello2.txt
Normal file
1
tests/expected/hello2.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
Hello there
|
Loading…
x
Reference in New Issue
Block a user