use std::time::Duration;
use clap::IntoApp;
use serde::{Deserialize, Serialize};
use layeredconf::LayeredConf;
#[derive(LayeredConf, Deserialize, Serialize, Clone, Debug)]
struct Config {
#[clap(long)]
optional: Option<String>,
#[layered(subconfig)]
subconfig: SubConfig,
}
#[derive(LayeredConf, Deserialize, Serialize, Clone, Debug)]
#[layered(subconfig)]
struct SubConfig {
#[clap(long)]
flibble: u64,
#[clap(skip)]
duration: Duration,
}
#[test]
fn test_clap_help_via_app() {
let mut app = ConfigLayer::into_app();
let mut output = Vec::new();
app.write_long_help(&mut output).unwrap();
let string = String::from_utf8(output).unwrap();
assert!(string.contains("Clap app description"));
assert!(string.contains("Long description."));
assert!(string.contains("Optional string"));
assert!(string.contains("Longer description..."));
assert!(string.contains("Flibble"));
assert!(!string.contains("Subconfig"));
assert!(!string.contains("Duration"));
}