diff --git a/src/uu/expr/src/syntax_tree.rs b/src/uu/expr/src/syntax_tree.rs index 0e0795bd4..b3cd329ba 100644 --- a/src/uu/expr/src/syntax_tree.rs +++ b/src/uu/expr/src/syntax_tree.rs @@ -8,10 +8,10 @@ //! * `` //! -// spell-checker:ignore (ToDO) binop binops ints paren prec multibytes +// spell-checker:ignore (ToDO) ints paren prec multibytes use num_bigint::BigInt; -use num_traits::{One, Zero}; +use num_traits::Zero; use onig::{Regex, RegexOptions, Syntax}; use crate::tokens::Token; @@ -515,7 +515,7 @@ fn value_as_bool(s: &str) -> bool { return false; } match s.parse::() { - Ok(n) => n.is_one(), + Ok(n) => n != Zero::zero(), Err(_) => true, } } diff --git a/tests/by-util/test_expr.rs b/tests/by-util/test_expr.rs index 665f89615..ea5a964d9 100644 --- a/tests/by-util/test_expr.rs +++ b/tests/by-util/test_expr.rs @@ -113,6 +113,16 @@ fn test_or() { .args(&["foo", "|", "bar"]) .succeeds() .stdout_only("foo\n"); + + new_ucmd!() + .args(&["14", "|", "1"]) + .succeeds() + .stdout_only("14\n"); + + new_ucmd!() + .args(&["-14", "|", "1"]) + .succeeds() + .stdout_only("-14\n"); } #[test] @@ -123,6 +133,13 @@ fn test_and() { .stdout_only("foo\n"); new_ucmd!().args(&["", "&", "1"]).run().stdout_is("0\n"); + + new_ucmd!().args(&["14", "&", "1"]).run().stdout_is("14\n"); + + new_ucmd!() + .args(&["-14", "&", "1"]) + .run() + .stdout_is("-14\n"); } #[test]