use assert_cmd::{cargo::cargo_bin, Command}; use serde_json::{Result, Value}; #[test] fn cli_version_works() { let crate_name = env!("CARGO_PKG_NAME"); let output = Command::new(cargo_bin(crate_name)) .arg("--version") .output() .unwrap(); assert!(output.status.success(), "command returned with non-success exit code"); let version = String::from_utf8_lossy(&output.stdout).trim().to_owned(); assert_eq!(version, format!("{} {}", crate_name, env!("CARGO_PKG_VERSION"))); } #[test] fn cli_info_works() { let crate_name = env!("CARGO_PKG_NAME"); let output = Command::new(cargo_bin(crate_name)) .arg("info") .arg("--json") .env("RUST_LOG", "none") .output() .unwrap(); assert!(output.status.success(), "command returned with non-success exit code"); let info = String::from_utf8_lossy(&output.stdout).trim().to_owned(); let v: Result = serde_json::from_str(&info); let v = v.unwrap(); assert!(!v["builtin"].to_string().is_empty()); assert!(!v["builtin"]["spec_name"].to_string().is_empty()); assert!(!v["builtin"]["spec_version"].to_string().is_empty()); assert!(!v["remote"].to_string().is_empty()); }