Skip to content

Commit

Permalink
Merge pull request #3834 from omjadas/fix/default-value-os-t
Browse files Browse the repository at this point in the history
fix: default_value_os_t
  • Loading branch information
epage committed Jun 15, 2022
2 parents 20358ff + 4d52142 commit 3c9f24a
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 1 deletion.
2 changes: 1 addition & 1 deletion clap_derive/src/attrs.rs
Expand Up @@ -594,7 +594,7 @@ impl Attrs {
quote_spanned!(ident.span()=> {
static DEFAULT_VALUE: clap::once_cell::sync::Lazy<::std::ffi::OsString> = clap::once_cell::sync::Lazy::new(|| {
let val: #ty = #val;
::std::ffi::OsString = val.into()
::std::ffi::OsString::from(val)
});
&*DEFAULT_VALUE
})
Expand Down
26 changes: 26 additions & 0 deletions tests/derive/default_value.rs
@@ -1,3 +1,5 @@
use std::path::PathBuf;

use clap::{CommandFactory, Parser};

use crate::utils;
Expand Down Expand Up @@ -44,6 +46,30 @@ fn auto_default_value_t() {
assert!(help.contains("[default: 0]"));
}

#[test]
fn default_value_os_t() {
#[derive(Parser, PartialEq, Debug)]
struct Opt {
#[clap(value_parser, default_value_os_t = PathBuf::from("abc.def"))]
arg: PathBuf,
}
assert_eq!(
Opt {
arg: PathBuf::from("abc.def")
},
Opt::try_parse_from(&["test"]).unwrap()
);
assert_eq!(
Opt {
arg: PathBuf::from("ghi")
},
Opt::try_parse_from(&["test", "ghi"]).unwrap()
);

let help = utils::get_long_help::<Opt>();
assert!(help.contains("[default: abc.def]"));
}

#[test]
fn detect_os_variant() {
#![allow(unused_parens)] // needed for `as_ref` call
Expand Down

0 comments on commit 3c9f24a

Please sign in to comment.