1 use crate::{build::app::Propagation, App, AppSettings};
2 
3 #[test]
global_version()4 fn 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()14 fn 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()28 fn 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()50 fn app_send_sync() {
51     fn foo<T: Send + Sync>(_: T) {}
52     foo(App::new("test"))
53 }
54 
55 #[test]
issue_2090()56 fn 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