diff --git a/src/uu/mktemp/src/mktemp.rs b/src/uu/mktemp/src/mktemp.rs index 102eadbe4..89fe21a64 100644 --- a/src/uu/mktemp/src/mktemp.rs +++ b/src/uu/mktemp/src/mktemp.rs @@ -267,7 +267,11 @@ fn parse_template<'a>( let rand = right - left; if rand < 3 { - return Err(MkTempError::TooFewXs(temp.into())); + let s = match suffix { + None => temp.into(), + Some(s) => format!("{}{}", temp, s), + }; + return Err(MkTempError::TooFewXs(s)); } let mut suf = &temp[right..]; diff --git a/tests/by-util/test_mktemp.rs b/tests/by-util/test_mktemp.rs index 15a6b932f..7c097b425 100644 --- a/tests/by-util/test_mktemp.rs +++ b/tests/by-util/test_mktemp.rs @@ -527,3 +527,19 @@ fn test_suffix_path_separator() { .fails() .stderr_only("mktemp: invalid suffix '\\b', contains directory separator\n"); } + +#[test] +fn test_too_few_xs_suffix() { + new_ucmd!() + .args(&["--suffix=X", "aXX"]) + .fails() + .stderr_only("mktemp: too few X's in template 'aXXX'\n"); +} + +#[test] +fn test_too_few_xs_suffix_directory() { + new_ucmd!() + .args(&["-d", "--suffix=X", "aXX"]) + .fails() + .stderr_only("mktemp: too few X's in template 'aXXX'\n"); +}