119625d8cSopenharmony_ci#![cfg(feature = "cargo")] 219625d8cSopenharmony_ci 319625d8cSopenharmony_ciuse clap::{ 419625d8cSopenharmony_ci crate_authors, crate_description, crate_name, crate_version, error::ErrorKind, Command, 519625d8cSopenharmony_ci}; 619625d8cSopenharmony_ci 719625d8cSopenharmony_ciuse crate::utils; 819625d8cSopenharmony_ci 919625d8cSopenharmony_cistatic DESCRIPTION_ONLY: &str = "prog 1 1019625d8cSopenharmony_ciA simple to use, efficient, and full-featured Command Line Argument Parser 1119625d8cSopenharmony_ci 1219625d8cSopenharmony_ciUsage: prog 1319625d8cSopenharmony_ci 1419625d8cSopenharmony_ciOptions: 1519625d8cSopenharmony_ci -h, --help Print help 1619625d8cSopenharmony_ci -V, --version Print version 1719625d8cSopenharmony_ci"; 1819625d8cSopenharmony_ci 1919625d8cSopenharmony_cistatic AUTHORS_ONLY: &str = "prog 1 2019625d8cSopenharmony_ci 2119625d8cSopenharmony_ci 2219625d8cSopenharmony_ciUsage: prog 2319625d8cSopenharmony_ci 2419625d8cSopenharmony_ciOptions: 2519625d8cSopenharmony_ci -h, --help Print help 2619625d8cSopenharmony_ci -V, --version Print version 2719625d8cSopenharmony_ci"; 2819625d8cSopenharmony_ci 2919625d8cSopenharmony_ci#[test] 3019625d8cSopenharmony_cifn crate_version() { 3119625d8cSopenharmony_ci let res = Command::new("prog") 3219625d8cSopenharmony_ci .version(crate_version!()) 3319625d8cSopenharmony_ci .help_template(utils::FULL_TEMPLATE) 3419625d8cSopenharmony_ci .try_get_matches_from(vec!["prog", "--version"]); 3519625d8cSopenharmony_ci 3619625d8cSopenharmony_ci assert!(res.is_err()); 3719625d8cSopenharmony_ci let err = res.unwrap_err(); 3819625d8cSopenharmony_ci assert_eq!(err.kind(), ErrorKind::DisplayVersion); 3919625d8cSopenharmony_ci assert_eq!( 4019625d8cSopenharmony_ci err.to_string(), 4119625d8cSopenharmony_ci format!("prog {}\n", env!("CARGO_PKG_VERSION")) 4219625d8cSopenharmony_ci ); 4319625d8cSopenharmony_ci} 4419625d8cSopenharmony_ci 4519625d8cSopenharmony_ci#[test] 4619625d8cSopenharmony_cifn crate_description() { 4719625d8cSopenharmony_ci let res = Command::new("prog") 4819625d8cSopenharmony_ci .version("1") 4919625d8cSopenharmony_ci .about(crate_description!()) 5019625d8cSopenharmony_ci .help_template(utils::FULL_TEMPLATE) 5119625d8cSopenharmony_ci .try_get_matches_from(vec!["prog", "--help"]); 5219625d8cSopenharmony_ci 5319625d8cSopenharmony_ci assert!(res.is_err()); 5419625d8cSopenharmony_ci let err = res.unwrap_err(); 5519625d8cSopenharmony_ci assert_eq!(err.kind(), ErrorKind::DisplayHelp); 5619625d8cSopenharmony_ci assert_eq!(err.to_string(), DESCRIPTION_ONLY); 5719625d8cSopenharmony_ci} 5819625d8cSopenharmony_ci 5919625d8cSopenharmony_ci#[test] 6019625d8cSopenharmony_cifn crate_authors() { 6119625d8cSopenharmony_ci let res = Command::new("prog") 6219625d8cSopenharmony_ci .version("1") 6319625d8cSopenharmony_ci .author(crate_authors!()) 6419625d8cSopenharmony_ci .help_template(utils::FULL_TEMPLATE) 6519625d8cSopenharmony_ci .try_get_matches_from(vec!["prog", "--help"]); 6619625d8cSopenharmony_ci 6719625d8cSopenharmony_ci assert!(res.is_err()); 6819625d8cSopenharmony_ci let err = res.unwrap_err(); 6919625d8cSopenharmony_ci assert_eq!(err.kind(), ErrorKind::DisplayHelp); 7019625d8cSopenharmony_ci assert_eq!(err.to_string(), AUTHORS_ONLY); 7119625d8cSopenharmony_ci} 7219625d8cSopenharmony_ci 7319625d8cSopenharmony_ci#[test] 7419625d8cSopenharmony_cifn crate_authors_with_sep() { 7519625d8cSopenharmony_ci let res = Command::new("prog") 7619625d8cSopenharmony_ci .version("1") 7719625d8cSopenharmony_ci .author(crate_authors!(", ")) 7819625d8cSopenharmony_ci .help_template(utils::FULL_TEMPLATE) 7919625d8cSopenharmony_ci .try_get_matches_from(vec!["prog", "--help"]); 8019625d8cSopenharmony_ci 8119625d8cSopenharmony_ci assert!(res.is_err()); 8219625d8cSopenharmony_ci let err = res.unwrap_err(); 8319625d8cSopenharmony_ci assert_eq!(err.kind(), ErrorKind::DisplayHelp); 8419625d8cSopenharmony_ci assert_eq!(err.to_string(), AUTHORS_ONLY); 8519625d8cSopenharmony_ci} 8619625d8cSopenharmony_ci 8719625d8cSopenharmony_ci#[test] 8819625d8cSopenharmony_cifn crate_name() { 8919625d8cSopenharmony_ci let res = Command::new(crate_name!()) 9019625d8cSopenharmony_ci .help_template(utils::FULL_TEMPLATE) 9119625d8cSopenharmony_ci .version("3.0") 9219625d8cSopenharmony_ci .try_get_matches_from(vec!["clap", "--version"]); 9319625d8cSopenharmony_ci 9419625d8cSopenharmony_ci assert!(res.is_err()); 9519625d8cSopenharmony_ci let err = res.unwrap_err(); 9619625d8cSopenharmony_ci assert_eq!(err.kind(), ErrorKind::DisplayVersion); 9719625d8cSopenharmony_ci assert_eq!(err.to_string(), "clap 3.0\n"); 9819625d8cSopenharmony_ci} 99