You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
2.6 KiB
118 lines
2.6 KiB
// https://github.com/TeXitoi/structopt/issues/{NUMBER}
|
|
|
|
mod utils;
|
|
use utils::*;
|
|
|
|
use structopt::StructOpt;
|
|
|
|
#[test]
|
|
fn issue_151() {
|
|
use structopt::{clap::ArgGroup, StructOpt};
|
|
|
|
#[derive(StructOpt, Debug)]
|
|
#[structopt(group = ArgGroup::with_name("verb").required(true).multiple(true))]
|
|
struct Opt {
|
|
#[structopt(long, group = "verb")]
|
|
foo: bool,
|
|
#[structopt(long, group = "verb")]
|
|
bar: bool,
|
|
}
|
|
|
|
#[derive(Debug, StructOpt)]
|
|
struct Cli {
|
|
#[structopt(flatten)]
|
|
a: Opt,
|
|
}
|
|
|
|
assert!(Cli::clap().get_matches_from_safe(&["test"]).is_err());
|
|
assert!(Cli::clap()
|
|
.get_matches_from_safe(&["test", "--foo"])
|
|
.is_ok());
|
|
assert!(Cli::clap()
|
|
.get_matches_from_safe(&["test", "--bar"])
|
|
.is_ok());
|
|
assert!(Cli::clap()
|
|
.get_matches_from_safe(&["test", "--zebra"])
|
|
.is_err());
|
|
assert!(Cli::clap()
|
|
.get_matches_from_safe(&["test", "--foo", "--bar"])
|
|
.is_ok());
|
|
}
|
|
|
|
#[test]
|
|
fn issue_289() {
|
|
use structopt::{clap::AppSettings, StructOpt};
|
|
|
|
#[derive(StructOpt)]
|
|
#[structopt(setting = AppSettings::InferSubcommands)]
|
|
enum Args {
|
|
SomeCommand(SubSubCommand),
|
|
AnotherCommand,
|
|
}
|
|
|
|
#[derive(StructOpt)]
|
|
#[structopt(setting = AppSettings::InferSubcommands)]
|
|
enum SubSubCommand {
|
|
TestCommand,
|
|
}
|
|
|
|
assert!(Args::clap()
|
|
.get_matches_from_safe(&["test", "some-command", "test-command"])
|
|
.is_ok());
|
|
assert!(Args::clap()
|
|
.get_matches_from_safe(&["test", "some", "test-command"])
|
|
.is_ok());
|
|
assert!(Args::clap()
|
|
.get_matches_from_safe(&["test", "some-command", "test"])
|
|
.is_ok());
|
|
assert!(Args::clap()
|
|
.get_matches_from_safe(&["test", "some", "test"])
|
|
.is_ok());
|
|
}
|
|
|
|
#[test]
|
|
fn issue_324() {
|
|
fn my_version() -> &'static str {
|
|
"MY_VERSION"
|
|
}
|
|
|
|
#[derive(StructOpt)]
|
|
#[structopt(version = my_version())]
|
|
struct Opt {
|
|
#[structopt(subcommand)]
|
|
_cmd: Option<SubCommand>,
|
|
}
|
|
|
|
#[derive(StructOpt)]
|
|
enum SubCommand {
|
|
Start,
|
|
}
|
|
|
|
let help = get_long_help::<Opt>();
|
|
assert!(help.contains("MY_VERSION"));
|
|
}
|
|
|
|
#[test]
|
|
fn issue_359() {
|
|
#[derive(Debug, PartialEq, StructOpt)]
|
|
struct Opt {
|
|
#[structopt(subcommand)]
|
|
sub: Subcommands,
|
|
}
|
|
|
|
#[derive(Debug, PartialEq, StructOpt)]
|
|
enum Subcommands {
|
|
Add,
|
|
|
|
#[structopt(external_subcommand)]
|
|
Other(Vec<String>),
|
|
}
|
|
|
|
assert_eq!(
|
|
Opt {
|
|
sub: Subcommands::Other(vec!["only_one_arg".into()])
|
|
},
|
|
Opt::from_iter(&["test", "only_one_arg"])
|
|
);
|
|
}
|