#![expect(clippy::expect_used, reason = "test scaffolding")]
use std::process::Command;
#[test]
fn test_llmenv_no_args_shows_help() {
let output = Command::new("cargo")
.args(["run", "--quiet", "--"])
.current_dir(env!("CARGO_MANIFEST_DIR"))
.output()
.expect("failed to run llmenv");
assert_eq!(
output.status.code(),
Some(2),
"expected exit code 2 for no-args"
);
let stderr = String::from_utf8_lossy(&output.stderr);
let stdout = String::from_utf8_lossy(&output.stdout);
let combined = format!("{}{}", stderr, stdout);
assert!(
combined.contains("Usage:"),
"help output should contain 'Usage:' line"
);
assert!(
combined.contains("doctor")
|| combined.contains("bundle-ls")
|| combined.contains("scope-ls"),
"help output should list available commands"
);
assert!(
combined.contains("Commands:")
&& !combined.contains("Run 'llmenv --help' for more information."),
"help output should be full help, not the minimal stub"
);
}
#[test]
fn test_llmenv_help_flag_shows_help() {
let output = Command::new("cargo")
.args(["run", "--quiet", "--", "--help"])
.current_dir(env!("CARGO_MANIFEST_DIR"))
.output()
.expect("failed to run llmenv --help");
assert_eq!(
output.status.code(),
Some(0),
"expected exit code 0 for --help"
);
let stderr = String::from_utf8_lossy(&output.stderr);
let stdout = String::from_utf8_lossy(&output.stdout);
let combined = format!("{}{}", stderr, stdout);
assert!(
combined.contains("Usage:") && combined.contains("Commands:"),
"help output should contain full command list"
);
}