From 760a15aa74c4947ca06e334bea9953344dcbaf56 Mon Sep 17 00:00:00 2001 From: Jeffrey Finkelstein Date: Tue, 22 Mar 2022 21:02:13 -0400 Subject: [PATCH] timeout: produce usage error on invalid signal Produce a usage error on an invalid signal argument. For example, $ timeout --signal=invalid 1 sleep 0 timeout: 'invalid': invalid signal Try 'timeout --help' for more information. --- src/uu/timeout/src/timeout.rs | 5 ++++- tests/by-util/test_timeout.rs | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/uu/timeout/src/timeout.rs b/src/uu/timeout/src/timeout.rs index c48bee1e6..fbd955242 100644 --- a/src/uu/timeout/src/timeout.rs +++ b/src/uu/timeout/src/timeout.rs @@ -57,7 +57,10 @@ impl Config { let signal_result = signal_by_name_or_value(signal_); match signal_result { None => { - unreachable!("invalid signal {}", signal_.quote()); + return Err(UUsageError::new( + ExitStatus::TimeoutFailed.into(), + format!("{}: invalid signal", signal_.quote()), + )) } Some(signal_value) => signal_value, } diff --git a/tests/by-util/test_timeout.rs b/tests/by-util/test_timeout.rs index 01ff85590..80e7240fe 100644 --- a/tests/by-util/test_timeout.rs +++ b/tests/by-util/test_timeout.rs @@ -97,3 +97,11 @@ fn test_negative_interval() { .fails() .usage_error("invalid time interval '-1'"); } + +#[test] +fn test_invalid_signal() { + new_ucmd!() + .args(&["-s", "invalid", "1", "sleep", "0"]) + .fails() + .usage_error("'invalid': invalid signal"); +}