diff --git a/src/uu/fmt/src/fmt.rs b/src/uu/fmt/src/fmt.rs index b795ad277..7e10c41e7 100644 --- a/src/uu/fmt/src/fmt.rs +++ b/src/uu/fmt/src/fmt.rs @@ -101,6 +101,9 @@ impl FmtOptions { (w, g) } (None, Some(&g)) => { + if g > DEFAULT_WIDTH { + return Err(USimpleError::new(1, "GOAL cannot be greater than WIDTH.")); + } let w = (g * 100 / DEFAULT_GOAL_TO_WIDTH_RATIO).max(g + 3); (w, g) } diff --git a/tests/by-util/test_fmt.rs b/tests/by-util/test_fmt.rs index 411ab322c..8d50023f3 100644 --- a/tests/by-util/test_fmt.rs +++ b/tests/by-util/test_fmt.rs @@ -93,6 +93,17 @@ fn test_fmt_goal_too_big() { } } +#[test] +fn test_fmt_goal_bigger_than_default_width_of_75() { + for param in ["-g", "--goal"] { + new_ucmd!() + .args(&["one-word-per-line.txt", param, "76"]) + .fails() + .code_is(1) + .stderr_is("fmt: GOAL cannot be greater than WIDTH.\n"); + } +} + #[test] fn test_fmt_invalid_goal() { for param in ["-g", "--goal"] {