use std::process::Command;
#[test]
fn cli_smoke_test() {
let output = Command::new("cargo")
.args([
"run",
"--",
"api",
"test-fixture",
"--manifest-path",
"test_fixture/Cargo.toml",
"--recursive",
])
.output()
.expect("Failed to run cargo-brief");
assert!(output.status.success(), "cargo-brief exited with error");
let stdout = String::from_utf8_lossy(&output.stdout);
assert!(stdout.contains("// crate test_fixture"), "has crate header");
assert!(stdout.contains("pub struct PubStruct"), "has PubStruct");
assert!(stdout.contains("pub enum PlainEnum"), "has PlainEnum");
assert!(stdout.contains("pub union MyUnion"), "has MyUnion");
assert!(stdout.contains("pub static GLOBAL_COUNT"), "has static");
}
#[test]
fn cli_self_keyword_test() {
let output = Command::new("cargo")
.args(["run", "--", "api", "self", "--depth", "0"])
.output()
.expect("Failed to run cargo-brief with self");
assert!(
output.status.success(),
"cargo-brief api self exited with error: {}",
String::from_utf8_lossy(&output.stderr)
);
let stdout = String::from_utf8_lossy(&output.stdout);
assert!(
stdout.contains("// crate cargo_brief"),
"self should resolve to cargo-brief crate, got:\n{stdout}"
);
}
#[test]
fn cli_self_module_syntax_test() {
let output = Command::new("cargo")
.args(["run", "--", "api", "self::cli"])
.output()
.expect("Failed to run cargo-brief with self::cli");
assert!(
output.status.success(),
"cargo-brief api self::cli exited with error: {}",
String::from_utf8_lossy(&output.stderr)
);
let stdout = String::from_utf8_lossy(&output.stdout);
assert!(
stdout.contains("BriefCommand")
|| stdout.contains("ApiArgs")
|| stdout.contains("FilterArgs"),
"self::cli should show CLI types, got:\n{stdout}"
);
}
#[test]
fn cli_file_path_test() {
let output = Command::new("cargo")
.args(["run", "--", "api", "src/cli.rs"])
.output()
.expect("Failed to run cargo-brief with file path");
assert!(
output.status.success(),
"cargo-brief api src/cli.rs exited with error: {}",
String::from_utf8_lossy(&output.stderr)
);
let stdout = String::from_utf8_lossy(&output.stdout);
assert!(
stdout.contains("BriefCommand")
|| stdout.contains("ApiArgs")
|| stdout.contains("FilterArgs"),
"src/cli.rs should show CLI types, got:\n{stdout}"
);
}