• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #![deny(warnings)]
10 
11 use structopt::StructOpt;
12 
try_str(s: &str) -> Result<String, std::convert::Infallible>13 fn try_str(s: &str) -> Result<String, std::convert::Infallible> {
14     Ok(s.into())
15 }
16 
17 #[test]
warning_never_struct()18 fn warning_never_struct() {
19     #[derive(Debug, PartialEq, StructOpt)]
20     struct Opt {
21         #[structopt(parse(try_from_str = try_str))]
22         s: String,
23     }
24     assert_eq!(
25         Opt {
26             s: "foo".to_string()
27         },
28         Opt::from_iter(&["test", "foo"])
29     );
30 }
31 
32 #[test]
warning_never_enum()33 fn warning_never_enum() {
34     #[derive(Debug, PartialEq, StructOpt)]
35     enum Opt {
36         Foo {
37             #[structopt(parse(try_from_str = try_str))]
38             s: String,
39         },
40     }
41     assert_eq!(
42         Opt::Foo {
43             s: "foo".to_string()
44         },
45         Opt::from_iter(&["test", "foo", "foo"])
46     );
47 }
48