use assert_cmd::Command; use test_case::test_case; static HTML: &str = "

Heading

"; static ID: &str = "title"; static SELECTOR: &str = "h1"; static TEXT: &str = " Heading "; #[test] fn test_stdin() { let mut cmd = Command::cargo_bin("select-html").unwrap(); cmd.pipe_stdin("tests/full.html").unwrap(); cmd.args([SELECTOR]); cmd.assert().success().stdout(format!("{HTML}\n")); } #[test_case("full", &[SELECTOR, "--attribute", "id"], ID; "attribute full")] #[test_case("partial", &[SELECTOR, "-a", "id"], ID; "attribute partial")] #[test_case("full", &[SELECTOR, "--text"], TEXT; "text full")] #[test_case("partial", &[SELECTOR, "-t"], TEXT; "text partial")] #[test_case("full", &[SELECTOR, "-t", "--trim"], TEXT.trim(); "trim full")] #[test_case("partial", &[SELECTOR, "-t", "--trim"], TEXT.trim(); "trim partial")] fn test_args(file: &str, args: &[&str], output: &str) { let file = format!("tests/{file}.html"); let mut cmd = Command::cargo_bin("select-html").unwrap(); cmd.args(args); cmd.args(["--file", &file]); cmd.assert().success().stdout(format!("{output}\n")); }