use assert_cmd::Command;
use predicates::prelude::*;
fn cmd() -> Command {
Command::cargo_bin("arborist").unwrap()
}
#[test]
fn simple_file_table_output() {
cmd()
.arg("tests/fixtures/simple.rs")
.assert()
.success()
.stdout(predicate::str::contains("hello"))
.stdout(predicate::str::contains("add"))
.stdout(predicate::str::contains("simple.rs"))
.stdout(predicate::str::contains("Rust"))
.stdout(predicate::str::contains("2 functions"));
}
#[test]
fn complex_file_metrics() {
cmd()
.arg("tests/fixtures/complex.rs")
.assert()
.success()
.stdout(predicate::str::contains("complex_function"))
.stdout(predicate::str::contains("simple_function"))
.stdout(predicate::str::contains("moderate_function"))
.stdout(predicate::str::contains("3 functions"));
}
#[test]
fn nonexistent_file_error() {
cmd()
.arg("nonexistent.rs")
.assert()
.code(2)
.stderr(predicate::str::contains("error"));
}
#[test]
fn unknown_extension_error() {
cmd()
.arg("unknown.xyz")
.assert()
.code(2)
.stderr(predicate::str::contains("error"));
}
#[test]
fn syntax_error_partial_parsing() {
cmd()
.arg("tests/fixtures/syntax_error.rs")
.assert()
.success()
.stdout(predicate::str::contains("valid_function"));
}