1 use crate::{build::app::Propagation, App, AppSettings}; 2 3 #[test] global_version()4fn global_version() { 5 let mut app = App::new("global_version") 6 .setting(AppSettings::GlobalVersion) 7 .version("1.1") 8 .subcommand(App::new("sub1")); 9 app._propagate(Propagation::NextLevel); 10 assert_eq!(app.subcommands[0].version, Some("1.1")); 11 } 12 13 #[test] global_setting()14fn global_setting() { 15 let mut app = App::new("test") 16 .global_setting(AppSettings::ColoredHelp) 17 .subcommand(App::new("subcmd")); 18 app._propagate(Propagation::NextLevel); 19 assert!(app 20 .subcommands 21 .iter() 22 .find(|s| s.name == "subcmd") 23 .unwrap() 24 .is_set(AppSettings::ColoredHelp)); 25 } 26 27 #[test] global_settings()28fn global_settings() { 29 let mut app = App::new("test") 30 .global_setting(AppSettings::ColoredHelp) 31 .global_setting(AppSettings::TrailingVarArg) 32 .subcommand(App::new("subcmd")); 33 app._propagate(Propagation::NextLevel); 34 assert!(app 35 .subcommands 36 .iter() 37 .find(|s| s.name == "subcmd") 38 .unwrap() 39 .is_set(AppSettings::ColoredHelp)); 40 assert!(app 41 .subcommands 42 .iter() 43 .find(|s| s.name == "subcmd") 44 .unwrap() 45 .is_set(AppSettings::TrailingVarArg)); 46 } 47 48 // This test will *fail to compile* if App is not Send + Sync 49 #[test] app_send_sync()50fn app_send_sync() { 51 fn foo<T: Send + Sync>(_: T) {} 52 foo(App::new("test")) 53 } 54 55 #[test] issue_2090()56fn issue_2090() { 57 let mut app = App::new("app") 58 .global_setting(AppSettings::DisableVersion) 59 .subcommand(App::new("sub")); 60 app._build(); 61 62 assert!(app.subcommands[0].is_set(AppSettings::DisableVersion)); 63 } 64