use crate::Arg; use crate::Command; #[test] fn propagate_version() { let mut cmd = Command::new("test") .propagate_version(true) .version("1.1") .subcommand(Command::new("sub1")); cmd._propagate(); assert_eq!( cmd.get_subcommands().next().unwrap().get_version(), Some("1.1") ); } #[test] fn global_setting() { let mut cmd = Command::new("test") .disable_version_flag(true) .subcommand(Command::new("subcmd")); cmd._propagate(); assert!(cmd .get_subcommands() .find(|s| s.get_name() == "subcmd") .unwrap() .is_disable_version_flag_set()); } // This test will *fail to compile* if Command is not Send + Sync #[test] fn app_send_sync() { fn foo(_: T) {} foo(Command::new("test")) } #[test] fn issue_2090() { let mut cmd = Command::new("cmd") .disable_version_flag(true) .subcommand(Command::new("sub")); cmd._build_self(false); assert!(cmd .get_subcommands() .next() .unwrap() .is_disable_version_flag_set()); } // This test will *fail to compile* if Arg is not Send + Sync #[test] fn arg_send_sync() { fn foo(_: T) {} foo(Arg::new("test")) }