use std::process::Command;
use std::str;
fn run_cli() -> Command {
Command::new(env!("CARGO_BIN_EXE_wme-cli"))
}
#[test]
fn test_cli_version() {
let output = run_cli()
.arg("--version")
.output()
.expect("Failed to execute CLI");
assert!(output.status.success());
let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(stdout.contains("wme"));
}
#[test]
fn test_cli_help() {
let output = run_cli()
.arg("--help")
.output()
.expect("Failed to execute CLI");
assert!(output.status.success());
let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(stdout.contains("Wikimedia Enterprise"));
assert!(stdout.contains("auth"));
assert!(stdout.contains("meta"));
assert!(stdout.contains("article"));
assert!(stdout.contains("snapshot"));
assert!(stdout.contains("realtime"));
}
#[test]
fn test_auth_subcommand_help() {
let output = run_cli()
.args(["auth", "--help"])
.output()
.expect("Failed to execute CLI");
assert!(output.status.success());
let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(stdout.contains("login"));
assert!(stdout.contains("refresh"));
assert!(stdout.contains("revoke"));
}
#[test]
fn test_meta_subcommand_help() {
let output = run_cli()
.args(["meta", "--help"])
.output()
.expect("Failed to execute CLI");
assert!(output.status.success());
let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(stdout.contains("project-codes"));
assert!(stdout.contains("languages"));
assert!(stdout.contains("projects"));
assert!(stdout.contains("namespaces"));
}
#[test]
fn test_article_subcommand_help() {
let output = run_cli()
.args(["article", "--help"])
.output()
.expect("Failed to execute CLI");
assert!(output.status.success());
let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(stdout.contains("get"));
assert!(stdout.contains("structured"));
}
#[test]
fn test_snapshot_subcommand_help() {
let output = run_cli()
.args(["snapshot", "--help"])
.output()
.expect("Failed to execute CLI");
assert!(output.status.success());
let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(stdout.contains("list"));
assert!(stdout.contains("info"));
assert!(stdout.contains("download"));
assert!(stdout.contains("chunks"));
assert!(stdout.contains("structured"));
}
#[test]
fn test_realtime_subcommand_help() {
let output = run_cli()
.args(["realtime", "--help"])
.output()
.expect("Failed to execute CLI");
assert!(output.status.success());
let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(stdout.contains("stream"));
assert!(stdout.contains("batches"));
}
#[test]
fn test_invalid_subcommand() {
let output = run_cli()
.args(["invalid-command"])
.output()
.expect("Failed to execute CLI");
assert!(!output.status.success());
let stderr = str::from_utf8(&output.stderr).unwrap();
assert!(stderr.contains("unrecognized subcommand") || stderr.contains("error"));
}
#[test]
fn test_global_output_flag_help() {
let output = run_cli()
.args(["--help"])
.output()
.expect("Failed to execute CLI");
assert!(output.status.success());
let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(stdout.contains("--output"));
assert!(stdout.contains("--token"));
assert!(stdout.contains("--config"));
assert!(stdout.contains("--verbose"));
}
#[test]
fn test_auth_login_help() {
let output = run_cli()
.args(["auth", "login", "--help"])
.output()
.expect("Failed to execute CLI");
assert!(output.status.success());
let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(stdout.contains("--username"));
assert!(stdout.contains("--password"));
}
#[test]
fn test_meta_project_codes_get_help() {
let output = run_cli()
.args(["meta", "project-codes-get", "--help"])
.output()
.expect("Failed to execute CLI");
assert!(output.status.success());
let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(stdout.contains("CODE"));
}
#[test]
fn test_snapshot_download_help() {
let output = run_cli()
.args(["snapshot", "download", "--help"])
.output()
.expect("Failed to execute CLI");
assert!(output.status.success());
let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(stdout.contains("IDENTIFIER"));
assert!(stdout.contains("--output-file"));
assert!(stdout.contains("--range"));
}
#[test]
fn test_realtime_stream_help() {
let output = run_cli()
.args(["realtime", "stream", "--help"])
.output()
.expect("Failed to execute CLI");
assert!(output.status.success());
let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(stdout.contains("--since"));
assert!(stdout.contains("--parts"));
assert!(stdout.contains("--offsets"));
assert!(stdout.contains("--ndjson"));
}
#[test]
fn test_snapshot_download_help_resume_info() {
let output = run_cli()
.args(["snapshot", "download", "--help"])
.output()
.expect("Failed to execute CLI");
assert!(output.status.success());
let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(stdout.contains("--range"));
assert!(stdout.contains("download"));
}
#[test]
fn test_snapshot_chunks_list_help() {
let output = run_cli()
.args(["snapshot", "chunks", "list", "--help"])
.output()
.expect("Failed to execute CLI");
assert!(output.status.success());
let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(stdout.contains("SNAPSHOT_ID"));
}