1 // Copyright 2018 Guillaume Pinot (@TeXitoi) <texitoi@texitoi.eu>
2 //
3 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
4 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
5 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
6 // option. This file may not be copied, modified, or distributed
7 // except according to those terms.
8 
9 mod utils;
10 
11 use structopt::StructOpt;
12 use utils::*;
13 
14 #[test]
no_author_version_about()15 fn no_author_version_about() {
16     #[derive(StructOpt, PartialEq, Debug)]
17     #[structopt(name = "foo", no_version)]
18     struct Opt {}
19 
20     let output = get_long_help::<Opt>();
21     assert!(output.starts_with("foo \n\nUSAGE:"));
22 }
23 
24 #[test]
use_env()25 fn use_env() {
26     #[derive(StructOpt, PartialEq, Debug)]
27     #[structopt(author, about)]
28     struct Opt {}
29 
30     let output = get_long_help::<Opt>();
31     assert!(output.starts_with("structopt 0."));
32     assert!(output.contains("Guillaume Pinot <texitoi@texitoi.eu>, others"));
33     assert!(output.contains("Parse command line argument by defining a struct."));
34 }
35 
36 #[test]
explicit_version_not_str()37 fn explicit_version_not_str() {
38     const VERSION: &str = "custom version";
39 
40     #[derive(StructOpt)]
41     #[structopt(version = VERSION)]
42     pub struct Opt {}
43 
44     let output = get_long_help::<Opt>();
45     assert!(output.contains("custom version"));
46 }
47 
48 #[test]
no_version_gets_propagated()49 fn no_version_gets_propagated() {
50     #[derive(StructOpt, PartialEq, Debug)]
51     #[structopt(no_version)]
52     enum Action {
53         Move,
54     }
55 
56     let output = get_subcommand_long_help::<Action>("move");
57     assert_eq!(output.lines().next(), Some("test-move "));
58 }
59