From 2e77d99dd4258a853e172a96ed5349d6bd2e169b Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Thu, 23 Nov 2023 14:35:02 +0100 Subject: [PATCH] expr: fail fast if there are no operands --- src/uu/expr/src/expr.rs | 6 +++++- tests/by-util/test_expr.rs | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/uu/expr/src/expr.rs b/src/uu/expr/src/expr.rs index ea559090c..909c4c376 100644 --- a/src/uu/expr/src/expr.rs +++ b/src/uu/expr/src/expr.rs @@ -5,7 +5,7 @@ use clap::{crate_version, Arg, ArgAction, Command}; use uucore::{ - error::{UResult, USimpleError}, + error::{UResult, USimpleError, UUsageError}, format_usage, help_about, help_section, help_usage, }; @@ -58,6 +58,10 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { .map(|v| v.into_iter().map(|s| s.as_ref()).collect::>()) .unwrap_or_default(); + if token_strings.is_empty() { + return Err(UUsageError::new(2, "missing operand")); + } + match process_expr(&token_strings[..]) { Ok(expr_result) => print_expr_ok(&expr_result), Err(expr_error) => Err(USimpleError::new(2, &expr_error)), diff --git a/tests/by-util/test_expr.rs b/tests/by-util/test_expr.rs index 72d7687b7..41fc8d454 100644 --- a/tests/by-util/test_expr.rs +++ b/tests/by-util/test_expr.rs @@ -11,7 +11,7 @@ fn test_no_arguments() { new_ucmd!() .fails() .code_is(2) - .stderr_only("expr: missing operand\n"); + .usage_error("missing operand"); } #[test]