From f883c9cf7a66d4460789bec86f464593098bdb69 Mon Sep 17 00:00:00 2001 From: Eduardo Rodrigues <16357187+eduardomourar@users.noreply.github.com> Date: Thu, 1 Oct 2026 16:50:56 +0100 Subject: [PATCH] chore: fix clippy issues --- src/uu/chmod/src/chmod.rs | 2 +- src/uu/cp/src/platform/linux.rs | 20 ++++---- src/uu/cut/src/matcher.rs | 4 +- src/uu/cut/src/searcher.rs | 4 +- src/uu/dd/src/dd.rs | 2 +- src/uu/ls/src/colors.rs | 2 +- src/uu/ls/src/output.rs | 8 +-- src/uu/printf/src/printf.rs | 4 +- src/uu/ptx/src/ptx.rs | 10 ++-- src/uu/shuf/src/shuf.rs | 2 +- src/uu/sort/src/chunks.rs | 14 ++--- src/uu/sort/src/sort.rs | 2 +- src/uucore/src/lib/features/encoding.rs | 4 +- src/uucore/src/lib/features/fsext/windows.rs | 2 +- src/uucore/src/lib/features/i18n/charmap.rs | 2 +- src/uucore/src/lib/mods/locale.rs | 12 ++--- tests/by-util/test_basename.rs | 9 +--- tests/by-util/test_chown.rs | 54 ++++++++++---------- tests/by-util/test_cp.rs | 2 +- tests/by-util/test_dd.rs | 8 +-- tests/by-util/test_dirname.rs | 4 +- tests/by-util/test_du.rs | 6 +-- tests/by-util/test_echo.rs | 8 +-- tests/by-util/test_head.rs | 6 +-- tests/by-util/test_hostname.rs | 8 +-- tests/by-util/test_id.rs | 2 +- tests/by-util/test_ln.rs | 17 ++---- tests/by-util/test_logname.rs | 2 +- tests/by-util/test_mv.rs | 8 +-- tests/by-util/test_pwd.rs | 2 +- tests/by-util/test_stat.rs | 6 +-- tests/by-util/test_tee.rs | 2 +- tests/by-util/test_truncate.rs | 4 +- tests/uutests/src/lib/util.rs | 12 ++--- 34 files changed, 120 insertions(+), 134 deletions(-) diff --git a/src/uu/chmod/src/chmod.rs b/src/uu/chmod/src/chmod.rs index d7a49a261b4..fe1b807811f 100644 --- a/src/uu/chmod/src/chmod.rs +++ b/src/uu/chmod/src/chmod.rs @@ -973,6 +973,6 @@ mod tests { let (c, a, i) = extract_negative_modes(["--", "-r", "file"].iter().map(OsString::from)); assert_eq!(c, None); assert_eq!(a, ["--", "-r", "file"]); - assert!(i.is_empty()); + assert_eq!(i, [] as [usize; 0]); } } diff --git a/src/uu/cp/src/platform/linux.rs b/src/uu/cp/src/platform/linux.rs index 0ba2ce30076..d14b067e915 100644 --- a/src/uu/cp/src/platform/linux.rs +++ b/src/uu/cp/src/platform/linux.rs @@ -154,7 +154,7 @@ fn check_sparse_detection(src_file: &File) -> io::Result { fn sparse_copy_without_hole_fd(src_file: &File, dst_file: &File, context: &str) -> CopyResult<()> { let ctx_err = |e: io::Error| CpError::IoErrContext(e, context.to_owned()); - let size = src_file.metadata().map_err(&ctx_err)?.size(); + let size = src_file.metadata().map_err(ctx_err)?.size(); ftruncate(dst_file, size).map_err(|e| CpError::IoErrContext(e.into(), context.to_owned()))?; let mut current_offset = 0; // Maximize the data read at once to 16 MiB to avoid memory hogging with large files @@ -178,10 +178,10 @@ fn sparse_copy_without_hole_fd(src_file: &File, dst_file: &File, context: &str) let buf = &mut buf[..read_len]; src_file .read_exact_at(buf, current_offset + i) - .map_err(&ctx_err)?; + .map_err(ctx_err)?; dst_file .write_all_at(buf, current_offset + i) - .map_err(&ctx_err)?; + .map_err(ctx_err)?; } current_offset = hole; } @@ -194,10 +194,10 @@ fn sparse_copy_fd(src_file: &mut File, dst_file: &File, context: &str) -> CopyRe // Keep the size as u64: on 32-bit targets a usize conversion would // panic for sources of 4 GiB and more. - let size = src_file.metadata().map_err(&ctx_err)?.size(); + let size = src_file.metadata().map_err(ctx_err)?.size(); ftruncate(dst_file, size).map_err(|e| CpError::IoErrContext(e.into(), context.to_owned()))?; - let blksize = dst_file.metadata().map_err(&ctx_err)?.blksize(); + let blksize = dst_file.metadata().map_err(ctx_err)?.blksize(); let mut buf: Vec = vec![0; blksize as usize]; let mut current_offset: u64 = 0; @@ -205,7 +205,7 @@ fn sparse_copy_fd(src_file: &mut File, dst_file: &File, context: &str) -> CopyRe // file extent mappings: // https://www.kernel.org/doc/html/latest/filesystems/fiemap.html while current_offset < size { - let this_read = src_file.read(&mut buf).map_err(&ctx_err)?; + let this_read = src_file.read(&mut buf).map_err(ctx_err)?; if this_read == 0 { // EOF before the size seen at fstat time (source truncated // concurrently): shrink the dest to the bytes actually copied @@ -218,7 +218,7 @@ fn sparse_copy_fd(src_file: &mut File, dst_file: &File, context: &str) -> CopyRe if buf.iter().any(|&x| x != 0) { dst_file .write_all_at(buf, current_offset) - .map_err(&ctx_err)?; + .map_err(ctx_err)?; } current_offset += this_read as u64; } @@ -269,15 +269,15 @@ where let ctx_err = |e: io::Error| CpError::IoErrContext(e, context.to_owned()); - let dest_is_stream = is_stream(&dst_file.metadata().map_err(&ctx_err)?); + let dest_is_stream = is_stream(&dst_file.metadata().map_err(ctx_err)?); if !dest_is_stream { // `copy_stream` doesn't clear the dest file, if dest is not a stream, we should clear it manually. - dst_file.set_len(0).map_err(&ctx_err)?; + dst_file.set_len(0).map_err(ctx_err)?; } buf_copy::copy_fast(&mut src_file, &mut dst_file) .map_err(|e| io::Error::other(format!("{e}"))) - .map_err(&ctx_err)?; + .map_err(ctx_err)?; Ok(()) } diff --git a/src/uu/cut/src/matcher.rs b/src/uu/cut/src/matcher.rs index 036daa6c027..a006204eaa6 100644 --- a/src/uu/cut/src/matcher.rs +++ b/src/uu/cut/src/matcher.rs @@ -21,7 +21,7 @@ pub struct ExactMatcher<'a> { impl<'a> ExactMatcher<'a> { pub fn new(needle: &'a [u8]) -> Self { - assert!(!needle.is_empty()); + assert_ne!(needle, []); Self { needle } } } @@ -51,7 +51,7 @@ pub struct MbExactMatcher<'a> { impl<'a> MbExactMatcher<'a> { pub fn new(needle: &'a [u8]) -> Self { - assert!(!needle.is_empty()); + assert_ne!(needle, []); Self { needle } } } diff --git a/src/uu/cut/src/searcher.rs b/src/uu/cut/src/searcher.rs index a25fa7909a1..ee5626ef833 100644 --- a/src/uu/cut/src/searcher.rs +++ b/src/uu/cut/src/searcher.rs @@ -58,7 +58,7 @@ mod exact_searcher_tests { let matcher = ExactMatcher::new("a".as_bytes()); let iter = Searcher::new(&matcher, "".as_bytes()); let items: Vec<(usize, usize)> = iter.collect(); - assert!(items.is_empty()); + assert_eq!(items, [] as [(usize, usize); 0]); } fn test_multibyte(line: &[u8], expected: &[(usize, usize)]) { @@ -137,7 +137,7 @@ mod whitespace_searcher_tests { let matcher = WhitespaceMatcher {}; let iter = Searcher::new(&matcher, "".as_bytes()); let items: Vec<(usize, usize)> = iter.collect(); - assert!(items.is_empty()); + assert_eq!(items, [] as [(usize, usize); 0]); } fn test_multispace(line: &[u8], expected: &[(usize, usize)]) { diff --git a/src/uu/dd/src/dd.rs b/src/uu/dd/src/dd.rs index b9e759bf901..56a166724f6 100644 --- a/src/uu/dd/src/dd.rs +++ b/src/uu/dd/src/dd.rs @@ -1805,6 +1805,6 @@ mod tests { use crate::AlignedBuf; let buf = AlignedBuf::new(0).unwrap(); - assert!(buf.as_bytes().is_empty()); + assert_eq!(buf.as_bytes(), []); } } diff --git a/src/uu/ls/src/colors.rs b/src/uu/ls/src/colors.rs index cd0b7cccd24..11f4b8675c9 100644 --- a/src/uu/ls/src/colors.rs +++ b/src/uu/ls/src/colors.rs @@ -148,7 +148,7 @@ impl<'a> StyleManager<'a> { style_code: &mut String, ) { if let Some(raw) = self.indicator_codes.get(&indicator).cloned() { - debug_assert!(!raw.is_empty()); + debug_assert_ne!(raw, ""); style_code.push_str(self.reset(!self.initial_reset_is_done)); style_code.push_str(ANSI_CSI); style_code.push_str(&raw); diff --git a/src/uu/ls/src/output.rs b/src/uu/ls/src/output.rs index a4ead6c111c..e996cdc8093 100644 --- a/src/uu/ls/src/output.rs +++ b/src/uu/ls/src/output.rs @@ -332,8 +332,8 @@ mod tests { fn test_streaming_output_new() { let collector = StreamingOutput::new(); assert!(collector.entries().is_empty()); - assert!(collector.directories().is_empty()); - assert!(collector.totals().is_empty()); + assert_eq!(collector.directories(), Vec::::new()); + assert_eq!(collector.totals(), Vec::::new()); } #[test] @@ -369,8 +369,8 @@ mod tests { collector.clear(); assert!(collector.entries().is_empty()); - assert!(collector.directories().is_empty()); - assert!(collector.totals().is_empty()); + assert_eq!(collector.directories(), Vec::::new()); + assert_eq!(collector.totals(), Vec::::new()); } #[test] diff --git a/src/uu/printf/src/printf.rs b/src/uu/printf/src/printf.rs index 04f5dbfdb93..4d4d979d0c5 100644 --- a/src/uu/printf/src/printf.rs +++ b/src/uu/printf/src/printf.rs @@ -100,7 +100,7 @@ fn print_formatted(args: impl uucore::Args) -> UResult<()> { if let Ok(FormatItem::Spec(_)) = item { format_seen = true; } - match item.map_err(&raise)?.write(stdout(), &mut args)? { + match item.map_err(raise)?.write(stdout(), &mut args)? { ControlFlow::Continue(()) => {} ControlFlow::Break(()) => return Ok(()), } @@ -127,7 +127,7 @@ fn print_formatted(args: impl uucore::Args) -> UResult<()> { while !args.is_exhausted() { for item in parse_spec_and_escape(format) { - match item.map_err(&raise)?.write(stdout(), &mut args)? { + match item.map_err(raise)?.write(stdout(), &mut args)? { ControlFlow::Continue(()) => {} ControlFlow::Break(()) => return Ok(()), } diff --git a/src/uu/ptx/src/ptx.rs b/src/uu/ptx/src/ptx.rs index e0f6a9da228..cbf61aadce6 100644 --- a/src/uu/ptx/src/ptx.rs +++ b/src/uu/ptx/src/ptx.rs @@ -1184,8 +1184,8 @@ mod tests { assert_eq!(chunks.keyword, "nut"); assert_eq!(chunks.after, " cake tart pie"); // Nothing wrapped around the ends of the line. - assert!(chunks.head.is_empty()); - assert!(chunks.tail.is_empty()); + assert_eq!(chunks.head, ""); + assert_eq!(chunks.tail, ""); } #[test] @@ -1204,8 +1204,8 @@ mod tests { assert_eq!(chunks.before, "/plum"); // No word at all fit to the right of the keyword. assert_eq!(chunks.after, "/"); - assert!(chunks.head.is_empty()); - assert!(chunks.tail.is_empty()); + assert_eq!(chunks.head, ""); + assert_eq!(chunks.tail, ""); } #[test] @@ -1222,6 +1222,6 @@ mod tests { &chars(" cake tart pie"), ); assert_eq!(chunks.before, "plum"); - assert!(chunks.after.is_empty()); + assert_eq!(chunks.after, ""); } } diff --git a/src/uu/shuf/src/shuf.rs b/src/uu/shuf/src/shuf.rs index 6689f09c902..c3630e10865 100644 --- a/src/uu/shuf/src/shuf.rs +++ b/src/uu/shuf/src/shuf.rs @@ -502,7 +502,7 @@ mod test_split_seps { #[test] fn test_empty_input() { - assert!(split_seps(b"", b'\n').is_empty()); + assert_eq!(split_seps(b"", b'\n'), [] as [&[u8]; 0]); } #[test] diff --git a/src/uu/sort/src/chunks.rs b/src/uu/sort/src/chunks.rs index ee8261dd856..362cf9bb6a2 100644 --- a/src/uu/sort/src/chunks.rs +++ b/src/uu/sort/src/chunks.rs @@ -273,13 +273,13 @@ fn parse_lines<'a>( let read = read.strip_suffix(&[separator]).unwrap_or(read); - assert!(lines.is_empty()); - assert!(line_data.selections.is_empty()); - assert!(line_data.num_infos.is_empty()); - assert!(line_data.parsed_floats.is_empty()); - assert!(line_data.line_num_floats.is_empty()); - assert!(line_data.collation_key_buffer.is_empty()); - assert!(line_data.collation_key_ends.is_empty()); + assert_eq!(lines.len(), 0); + assert_eq!(line_data.selections.len(), 0); + assert_eq!(line_data.num_infos.len(), 0); + assert_eq!(line_data.parsed_floats.len(), 0); + assert_eq!(line_data.line_num_floats.len(), 0); + assert_eq!(line_data.collation_key_buffer.len(), 0); + assert_eq!(line_data.collation_key_ends.len(), 0); token_buffer.clear(); let mut estimated = (*line_count_hint).max(1); let mut exact_line_count = None; diff --git a/src/uu/sort/src/sort.rs b/src/uu/sort/src/sort.rs index 3159a1020ce..ad422845f89 100644 --- a/src/uu/sort/src/sort.rs +++ b/src/uu/sort/src/sort.rs @@ -907,7 +907,7 @@ fn tokenize( token_buffer: &mut Vec, precomputed: &Precomputed, ) { - assert!(token_buffer.is_empty()); + assert_eq!(token_buffer.as_slice(), []); if let Some(separator) = separator { tokenize_with_separator(line, separator, token_buffer); } else { diff --git a/src/uucore/src/lib/features/encoding.rs b/src/uucore/src/lib/features/encoding.rs index 4a6e3394835..f441e2e6def 100644 --- a/src/uucore/src/lib/features/encoding.rs +++ b/src/uucore/src/lib/features/encoding.rs @@ -44,7 +44,7 @@ impl Base64SimdWrapper { ) -> Self { assert!(valid_decoding_multiple > 0); assert!(unpadded_multiple > 0); - assert!(!alphabet.is_empty()); + assert_ne!(alphabet, []); Self { alphabet, @@ -195,7 +195,7 @@ impl EncodingWrapper { assert!(unpadded_multiple > 0); - assert!(!alphabet.is_empty()); + assert_ne!(alphabet, []); Self { alphabet, diff --git a/src/uucore/src/lib/features/fsext/windows.rs b/src/uucore/src/lib/features/fsext/windows.rs index dd3eb15b077..124ae0d7b0a 100644 --- a/src/uucore/src/lib/features/fsext/windows.rs +++ b/src/uucore/src/lib/features/fsext/windows.rs @@ -310,7 +310,7 @@ mod tests { .all(|m| m.mount_dir.to_string_lossy().ends_with('\\')) ); let system = mounts.iter().find(|m| m.mount_dir == system_drive).unwrap(); - assert!(!system.fs_type.is_empty()); + assert_ne!(system.fs_type, ""); assert_eq!(system.dev_name, system_drive.to_string_lossy()); } } diff --git a/src/uucore/src/lib/features/i18n/charmap.rs b/src/uucore/src/lib/features/i18n/charmap.rs index e20d2d4c67e..44a23fa31a4 100644 --- a/src/uucore/src/lib/features/i18n/charmap.rs +++ b/src/uucore/src/lib/features/i18n/charmap.rs @@ -69,7 +69,7 @@ impl Encoding { /// `bytes.len()`, and never `0` for a non-empty slice. #[inline] pub fn char_len(self, bytes: &[u8]) -> usize { - debug_assert!(!bytes.is_empty()); + debug_assert_ne!(bytes, []); let b0 = bytes[0]; if b0 <= 0x7F { return 1; diff --git a/src/uucore/src/lib/mods/locale.rs b/src/uucore/src/lib/mods/locale.rs index 3c09978ab82..7ab6dc468a3 100644 --- a/src/uucore/src/lib/mods/locale.rs +++ b/src/uucore/src/lib/mods/locale.rs @@ -1748,7 +1748,7 @@ invalid-syntax = This is { $missing // Test that we can get messages (should use embedded English for "test" utility) let message = get_message("test-about"); // Since we're using embedded resources, we should get the expected message - assert!(!message.is_empty()); + assert_ne!(message, ""); // Restore original LANG value if let Some(val) = original_lang { @@ -1779,7 +1779,7 @@ invalid-syntax = This is { $missing // Should fall back to English embedded resources let message = get_message("test-about"); - assert!(!message.is_empty()); // Should get something, not just the key + assert_ne!(message, ""); // Should get something, not just the key // Restore original LANG value if let Some(val) = original_lang { @@ -1858,18 +1858,18 @@ invalid-syntax = This is { $missing // Test that common strings are available after initialization let error_after_init = get_message("common-error"); // Should either be translated or return the key (but not panic) - assert!(!error_after_init.is_empty()); + assert_ne!(error_after_init, ""); let tip_after_init = get_message("common-tip"); - assert!(!tip_after_init.is_empty()); + assert_ne!(tip_after_init, ""); // Test that clap error keys work with fallbacks let unknown_arg_key = get_message("clap-error-unexpected-argument"); - assert!(!unknown_arg_key.is_empty()); + assert_ne!(unknown_arg_key, ""); // Test usage key fallback let usage_key = get_message("common-usage"); - assert!(!usage_key.is_empty()); + assert_ne!(usage_key, ""); }) .join() .unwrap(); diff --git a/tests/by-util/test_basename.rs b/tests/by-util/test_basename.rs index 2b85116e064..f31b6d8736c 100644 --- a/tests/by-util/test_basename.rs +++ b/tests/by-util/test_basename.rs @@ -123,14 +123,7 @@ fn test_zero_param() { } fn expect_error(input: &[&str]) { - assert!( - !new_ucmd!() - .args(input) - .fails() - .no_stdout() - .stderr_str() - .is_empty() - ); + assert_ne!(new_ucmd!().args(input).fails().no_stdout().stderr_str(), ""); } #[test] diff --git a/tests/by-util/test_chown.rs b/tests/by-util/test_chown.rs index 34b37e69e60..a7b8d1dbbd0 100644 --- a/tests/by-util/test_chown.rs +++ b/tests/by-util/test_chown.rs @@ -95,7 +95,7 @@ fn test_chown_only_owner() { return; } let user_name = String::from(result.stdout_str().trim()); - assert!(!user_name.is_empty()); + assert_ne!(user_name, ""); let file1 = "test_chown_file1"; at.touch(file1); @@ -132,7 +132,7 @@ fn test_chown_only_owner_colon() { return; } let user_name = String::from(result.stdout_str().trim()); - assert!(!user_name.is_empty()); + assert_ne!(user_name, ""); let file1 = "test_chown_file1"; at.touch(file1); @@ -176,7 +176,7 @@ fn test_chown_dot_separator_warning() { return; } let user_name = String::from(result.stdout_str().trim()); - assert!(!user_name.is_empty()); + assert_ne!(user_name, ""); let file1 = "test_chown_dot_warn"; at.touch(file1); @@ -186,7 +186,7 @@ fn test_chown_dot_separator_warning() { return; } let group_name = String::from(result.stdout_str().trim()); - assert!(!group_name.is_empty()); + assert_ne!(group_name, ""); // chown user. file should warn about '.' separator scene @@ -294,7 +294,7 @@ fn test_chown_owner_group() { } let user_name = String::from(result.stdout_str().trim()); - assert!(!user_name.is_empty()); + assert_ne!(user_name, ""); let file1 = "test_chown_file1"; at.touch(file1); @@ -304,7 +304,7 @@ fn test_chown_owner_group() { return; } let group_name = String::from(result.stdout_str().trim()); - assert!(!group_name.is_empty()); + assert_ne!(group_name, ""); let result = scene .ucmd() @@ -356,7 +356,7 @@ fn test_chown_various_input() { } let user_name = String::from(result.stdout_str().trim()); - assert!(!user_name.is_empty()); + assert_ne!(user_name, ""); let file1 = "test_chown_file1"; at.touch(file1); @@ -366,7 +366,7 @@ fn test_chown_various_input() { return; } let group_name = String::from(result.stdout_str().trim()); - assert!(!group_name.is_empty()); + assert_ne!(group_name, ""); let result = scene .ucmd() @@ -415,7 +415,7 @@ fn test_chown_only_group() { return; } let group_name = String::from(result.stdout_str().trim()); - assert!(!group_name.is_empty()); + assert_ne!(group_name, ""); let file1 = "test_chown_file1"; at.touch(file1); @@ -453,7 +453,7 @@ fn test_chown_only_user_id() { return; } let user_id = String::from(result.stdout_str().trim()); - assert!(!user_id.is_empty()); + assert_ne!(user_id, ""); let file1 = "test_chown_file1"; at.touch(file1); @@ -487,7 +487,7 @@ fn test_chown_fail_id() { return; } let user_id = String::from(result.stdout_str().trim()); - assert!(!user_id.is_empty()); + assert_ne!(user_id, ""); let file1 = "test_chown_file1"; at.touch(file1); @@ -543,7 +543,7 @@ fn test_chown_only_group_id() { return; } let group_id = String::from(result.stdout_str().trim()); - assert!(!group_id.is_empty()); + assert_ne!(group_id, ""); let file1 = "test_chown_file1"; at.touch(file1); @@ -611,14 +611,14 @@ fn test_chown_owner_group_id() { return; } let user_id = String::from(result.stdout_str().trim()); - assert!(!user_id.is_empty()); + assert_ne!(user_id, ""); let result = scene.cmd("id").arg("-g").run(); if skipping_test_is_okay(&result, "id: cannot find name for group ID") { return; } let group_id = String::from(result.stdout_str().trim()); - assert!(!group_id.is_empty()); + assert_ne!(group_id, ""); let file1 = "test_chown_file1"; at.touch(file1); @@ -671,14 +671,14 @@ fn test_chown_owner_group_mix() { return; } let user_id = String::from(result.stdout_str().trim()); - assert!(!user_id.is_empty()); + assert_ne!(user_id, ""); let result = scene.cmd("id").arg("-gn").run(); if skipping_test_is_okay(&result, "id: cannot find name for group ID") { return; } let group_name = String::from(result.stdout_str().trim()); - assert!(!group_name.is_empty()); + assert_ne!(group_name, ""); let file1 = "test_chown_file1"; at.touch(file1); @@ -710,7 +710,7 @@ fn test_chown_recursive() { return; } let user_name = String::from(result.stdout_str().trim()); - assert!(!user_name.is_empty()); + assert_ne!(user_name, ""); at.mkdir_all("a/b/c"); at.mkdir("z"); @@ -740,7 +740,7 @@ fn test_root_preserve() { return; } let user_name = String::from(result.stdout_str().trim()); - assert!(!user_name.is_empty()); + assert_ne!(user_name, ""); let result = scene .ucmd() @@ -782,7 +782,7 @@ fn test_chown_file_notexisting() { return; } let user_name = String::from(result.stdout_str().trim()); - assert!(!user_name.is_empty()); + assert_ne!(user_name, ""); scene .ucmd() @@ -807,7 +807,7 @@ fn test_chown_no_change_to_user() { return; } let user_name = String::from(result.stdout_str().trim()); - assert!(!user_name.is_empty()); + assert_ne!(user_name, ""); for (i, from) in ["42", ":42", "42:42"].iter().enumerate() { let file = i.to_string(); @@ -834,13 +834,13 @@ fn test_chown_no_change_to_group() { return; } let user_name = String::from(result.stdout_str().trim()); - assert!(!user_name.is_empty()); + assert_ne!(user_name, ""); let result = scene.cmd("id").arg("-ng").run(); if skipping_test_is_okay(&result, "id: cannot find name for group ID") { return; } let group_name = String::from(result.stdout_str().trim()); - assert!(!group_name.is_empty()); + assert_ne!(group_name, ""); for (i, from) in ["42", ":42", "42:42"].iter().enumerate() { let file = i.to_string(); @@ -867,13 +867,13 @@ fn test_chown_no_change_to_user_group() { return; } let user_name = String::from(result.stdout_str().trim()); - assert!(!user_name.is_empty()); + assert_ne!(user_name, ""); let result = scene.cmd("id").arg("-ng").run(); if skipping_test_is_okay(&result, "id: cannot find name for group ID") { return; } let group_name = String::from(result.stdout_str().trim()); - assert!(!group_name.is_empty()); + assert_ne!(group_name, ""); for (i, from) in ["42", ":42", "42:42"].iter().enumerate() { let file = i.to_string(); @@ -936,7 +936,7 @@ fn test_chown_no_dereference_symlink_to_dir() { return; } let user_name = String::from(result.stdout_str().trim()); - assert!(!user_name.is_empty()); + assert_ne!(user_name, ""); at.mkdir("dir"); at.symlink_dir("dir", "link_to_dir"); @@ -980,7 +980,7 @@ fn test_chown_symlink_cycles() { return; } let user_name = String::from(result.stdout_str().trim()); - assert!(!user_name.is_empty()); + assert_ne!(user_name, ""); at.mkdir_all("a/b/c"); at.symlink_dir("a", "a/b/c/d"); @@ -1028,7 +1028,7 @@ fn test_chown_symlink_two_links_same_dir() { return; } let user_name = String::from(result.stdout_str().trim()); - assert!(!user_name.is_empty()); + assert_ne!(user_name, ""); // spell-checker:disable at.mkdir_all("base/realdir"); diff --git a/tests/by-util/test_cp.rs b/tests/by-util/test_cp.rs index 50788c0e9a0..3d04b3e324b 100644 --- a/tests/by-util/test_cp.rs +++ b/tests/by-util/test_cp.rs @@ -6111,7 +6111,7 @@ fn test_cp_debug_sparse_never_zero_sized_virtual_file() { )] fn test_cp_zero_sized_virtual_file_contents() { let expected = std::fs::read_to_string("/proc/version").unwrap(); - assert!(!expected.is_empty()); + assert_ne!(expected, ""); for extra in [ &[][..], diff --git a/tests/by-util/test_dd.rs b/tests/by-util/test_dd.rs index ea529fb121b..6cc68ece715 100644 --- a/tests/by-util/test_dd.rs +++ b/tests/by-util/test_dd.rs @@ -2267,7 +2267,7 @@ fn test_locale_aware_case_conversion() { } else { println!("Turkish locale not available, using fallback behavior"); // Test that it at least doesn't crash and produces some output - assert!(!result.stdout().is_empty()); + assert_ne!(result.stdout(), []); } } @@ -2292,7 +2292,7 @@ fn test_french_locale_case_conversion() { } else { println!("French locale not available, using fallback behavior"); // Test that it at least doesn't crash and produces some output - assert!(!result.stdout().is_empty()); + assert_ne!(result.stdout(), []); } // Test reverse conversion: à (0xE0) should convert to À (0xC0) with ucase @@ -2308,7 +2308,7 @@ fn test_french_locale_case_conversion() { println!("French locale case conversion working correctly for à -> À"); } else { println!("French locale not available for reverse conversion, using fallback behavior"); - assert!(!result.stdout().is_empty()); + assert_ne!(result.stdout(), []); } // Test another French character: Ç (0xC7) should convert to ç (0xE7) with lcase @@ -2324,7 +2324,7 @@ fn test_french_locale_case_conversion() { println!("French locale case conversion working correctly for Ç -> ç"); } else { println!("French locale not available for Ç conversion, using fallback behavior"); - assert!(!result.stdout().is_empty()); + assert_ne!(result.stdout(), []); } } diff --git a/tests/by-util/test_dirname.rs b/tests/by-util/test_dirname.rs index 3ed660877ef..09b7fad696d 100644 --- a/tests/by-util/test_dirname.rs +++ b/tests/by-util/test_dirname.rs @@ -84,7 +84,7 @@ fn test_dirname_non_utf8_paths() { let result = new_ucmd!().arg(non_utf8_name).succeeds(); let output = result.stdout_str_lossy(); - assert!(!output.is_empty()); + assert_ne!(output, ""); assert!(output.contains("test_")); } @@ -190,7 +190,7 @@ fn test_trailing_dot_non_utf8() { let result = new_ucmd!().arg(non_utf8_path).succeeds(); let output = result.stdout_str_lossy(); - assert!(!output.is_empty()); + assert_ne!(output, ""); assert!(output.contains("test_")); assert!(!output.trim().ends_with('.')); } diff --git a/tests/by-util/test_du.rs b/tests/by-util/test_du.rs index 39cc4626997..6427000ace5 100644 --- a/tests/by-util/test_du.rs +++ b/tests/by-util/test_du.rs @@ -2227,10 +2227,10 @@ fn test_du_safe_traversal_with_symlinks() { at.symlink_file(&format!("{deep_path}/target.txt"), "shallow_link.txt"); let result = ts.ucmd().arg("-L").arg("shallow_link.txt").succeeds(); - assert!(!result.stdout_str().is_empty()); + assert_ne!(result.stdout_str(), ""); let result = ts.ucmd().arg("shallow_link.txt").succeeds(); - assert!(!result.stdout_str().is_empty()); + assert_ne!(result.stdout_str(), ""); } #[test] #[cfg(unix)] @@ -2375,7 +2375,7 @@ fn test_du_long_path_from_unreadable() { let target_path = at.plus(&dir_name); let result = ts.ucmd().arg("-s").arg(&target_path).succeeds(); // Should succeed with safe traversal - assert!(!result.stdout_str().is_empty()); + assert_ne!(result.stdout_str(), ""); let output = result.stdout_str().trim(); let parts: Vec<&str> = output.split_whitespace().collect(); assert_eq!(parts.len(), 2); diff --git a/tests/by-util/test_echo.rs b/tests/by-util/test_echo.rs index 827005ba278..1a1a229fec3 100644 --- a/tests/by-util/test_echo.rs +++ b/tests/by-util/test_echo.rs @@ -855,17 +855,17 @@ fn test_uchild_when_run_no_wait_with_a_non_blocking_util() { // check the current output is correct std::assert_eq!(child.stdout(), "hello world\n"); - assert!(child.stderr().is_empty()); + assert_eq!(child.stderr(), ""); // check the current output of echo is empty. We already called `child.stdout()` and `echo` // exited so there's no additional output after the first call of `child.stdout()` - assert!(child.stdout().is_empty()); - assert!(child.stderr().is_empty()); + assert_eq!(child.stdout(), ""); + assert_eq!(child.stderr(), ""); // check that we're still able to access all output of the child process, even after exit // and call to `child.stdout()` std::assert_eq!(child.stdout_all(), "hello world\n"); - assert!(child.stderr_all().is_empty()); + assert_eq!(child.stderr_all(), ""); // we should be able to call kill without panics, even if the process already exited child.make_assertion().is_not_alive(); diff --git a/tests/by-util/test_head.rs b/tests/by-util/test_head.rs index ca4eaae35d9..641b4c2bb48 100644 --- a/tests/by-util/test_head.rs +++ b/tests/by-util/test_head.rs @@ -823,7 +823,7 @@ fn test_read_backwards_bytes_proc_fs_version() { let args = ["-c", "-1", "/proc/version"]; let result = ts.ucmd().args(&args).succeeds(); - assert!(!result.stdout().is_empty()); + assert_ne!(result.stdout(), []); } #[cfg(all( @@ -843,7 +843,7 @@ fn test_read_backwards_bytes_proc_fs_modules() { // Only expect output if the file is not empty, e.g. it is empty in default WSL2. if !ts.fixtures.read("/proc/modules").is_empty() { - assert!(!result.stdout().is_empty()); + assert_ne!(result.stdout(), []); } } @@ -864,7 +864,7 @@ fn test_read_backwards_lines_proc_fs_modules() { // Only expect output if the file is not empty, e.g. it is empty in default WSL2. if !ts.fixtures.read("/proc/modules").is_empty() { - assert!(!result.stdout().is_empty()); + assert_ne!(result.stdout(), []); } } diff --git a/tests/by-util/test_hostname.rs b/tests/by-util/test_hostname.rs index dc0b7510192..04b0d1423f7 100644 --- a/tests/by-util/test_hostname.rs +++ b/tests/by-util/test_hostname.rs @@ -18,13 +18,13 @@ fn test_hostname() { #[test] fn test_hostname_ip() { let result = new_ucmd!().arg("-i").succeeds(); - assert!(!result.stdout_str().trim().is_empty()); + assert_ne!(result.stdout_str().trim(), ""); } #[test] fn test_hostname_full() { let ls_short_res = new_ucmd!().arg("-s").succeeds(); - assert!(!ls_short_res.stdout_str().trim().is_empty()); + assert_ne!(ls_short_res.stdout_str().trim(), ""); new_ucmd!() .arg("-f") @@ -45,7 +45,7 @@ fn test_hostname_domain_empty() { let domain_short = new_ucmd!().arg("-sd").succeeds(); if fqdn.stdout() == short.stdout() { - assert!(domain.stdout().is_empty()); - assert!(domain_short.stdout().is_empty()); + assert_eq!(domain.stdout(), []); + assert_eq!(domain_short.stdout(), []); } } diff --git a/tests/by-util/test_id.rs b/tests/by-util/test_id.rs index 30e4c1ac9a0..71b6d89f3ec 100644 --- a/tests/by-util/test_id.rs +++ b/tests/by-util/test_id.rs @@ -161,7 +161,7 @@ fn test_id_groups_ordering() { let groups = ts.ucmd().arg("-G").succeeds().stdout_move_str(); let mut from_flag: Vec<&str> = groups.split_whitespace().collect(); - assert!(!from_flag.is_empty()); + assert_ne!(from_flag, [] as [&str; 0]); // `-G` heads with the real gid let rgid = ts.ucmd().args(&["-g", "-r"]).succeeds().stdout_move_str(); diff --git a/tests/by-util/test_ln.rs b/tests/by-util/test_ln.rs index ddd5e70463b..2d17c030e15 100644 --- a/tests/by-util/test_ln.rs +++ b/tests/by-util/test_ln.rs @@ -546,12 +546,11 @@ fn test_symlink_overwrite_dir_fail() { at.touch(path_a); at.mkdir(path_b); - assert!( - !ucmd - .args(&["-s", "-T", path_a, path_b]) + assert_ne!( + ucmd.args(&["-s", "-T", path_a, path_b]) .fails() - .stderr_str() - .is_empty() + .stderr_str(), + "" ); } @@ -602,13 +601,7 @@ fn test_symlink_target_only() { at.mkdir(dir); - assert!( - !ucmd - .args(&["-s", "-t", dir]) - .fails() - .stderr_str() - .is_empty() - ); + assert_ne!(ucmd.args(&["-s", "-t", dir]).fails().stderr_str(), ""); } #[test] diff --git a/tests/by-util/test_logname.rs b/tests/by-util/test_logname.rs index c3ff0458670..43fa4a1d5d1 100644 --- a/tests/by-util/test_logname.rs +++ b/tests/by-util/test_logname.rs @@ -29,7 +29,7 @@ fn test_normal() { } result.success(); - assert!(!result.stdout_str().trim().is_empty()); + assert_ne!(result.stdout_str().trim(), ""); } #[test] diff --git a/tests/by-util/test_mv.rs b/tests/by-util/test_mv.rs index e2c3f534685..333cf0040f8 100644 --- a/tests/by-util/test_mv.rs +++ b/tests/by-util/test_mv.rs @@ -1718,16 +1718,16 @@ fn test_mv_interactive_error() { // $ at.mkdir dir && at.touch file // $ mv -i dir file // err == mv: cannot overwrite non-directory 'file' with directory 'dir' - assert!( - !scene + assert_ne!( + scene .ucmd() .arg("-i") .arg(dir) .arg(file_a) .pipe_in("y") .fails() - .stderr_str() - .is_empty() + .stderr_str(), + "" ); } diff --git a/tests/by-util/test_pwd.rs b/tests/by-util/test_pwd.rs index e0448179f75..b042c6f4e84 100644 --- a/tests/by-util/test_pwd.rs +++ b/tests/by-util/test_pwd.rs @@ -52,7 +52,7 @@ fn test_deleted_dir() { .output() .unwrap(); assert!(!output.status.success()); - assert!(output.stdout.is_empty()); + assert_eq!(output.stdout, [] as [u8; 0]); assert_eq!( String::from_utf8_lossy(&output.stderr), "pwd: failed to get current directory: No such file or directory\n" diff --git a/tests/by-util/test_stat.rs b/tests/by-util/test_stat.rs index ae27fa53294..2206dc5b2d7 100644 --- a/tests/by-util/test_stat.rs +++ b/tests/by-util/test_stat.rs @@ -113,7 +113,7 @@ fn test_terse_normal_format() { println!("expect: {expect:?}"); let v_actual: Vec<&str> = actual.trim().split(' ').collect(); let mut v_expect: Vec<&str> = expect.trim().split(' ').collect(); - assert!(!v_expect.is_empty()); + assert_ne!(v_expect, [] as [&str; 0]); // uu_stat does not support selinux if v_actual.len() == v_expect.len() - 1 && v_expect[v_expect.len() - 1].contains(':') { @@ -145,7 +145,7 @@ fn test_format_created_time() { let re = regex::Regex::new(r"\s").unwrap(); let v_actual: Vec<&str> = re.split(&actual).collect(); let v_expect: Vec<&str> = re.split(&expect).collect(); - assert!(!v_expect.is_empty()); + assert_ne!(v_expect, [] as [&str; 0]); // * allow for inequality if `stat` (aka, expect) returns "-" (unknown value) assert!( expect == "-" @@ -170,7 +170,7 @@ fn test_format_created_seconds() { let re = regex::Regex::new(r"\s").unwrap(); let v_actual: Vec<&str> = re.split(&actual).collect(); let v_expect: Vec<&str> = re.split(&expect).collect(); - assert!(!v_expect.is_empty()); + assert_ne!(v_expect, [] as [&str; 0]); // * allow for inequality if `stat` (aka, expect) returns "0" (unknown value) assert!( expect == "0" diff --git a/tests/by-util/test_tee.rs b/tests/by-util/test_tee.rs index f8bad5aa834..0cb033d6fca 100644 --- a/tests/by-util/test_tee.rs +++ b/tests/by-util/test_tee.rs @@ -777,5 +777,5 @@ fn test_write_failure_reports_error_and_nonzero_exit() { let result = ucmd.arg("out_dir").pipe_in("data").fails(); - assert!(!result.stderr_str().is_empty()); + assert_ne!(result.stderr_str(), ""); } diff --git a/tests/by-util/test_truncate.rs b/tests/by-util/test_truncate.rs index 841fd53a9fe..3fbe0b61ba1 100644 --- a/tests/by-util/test_truncate.rs +++ b/tests/by-util/test_truncate.rs @@ -494,7 +494,7 @@ fn test_underflow_relative_size() { let (at, mut ucmd) = at_and_ucmd!(); ucmd.args(&["-s-1", FILE1]).succeeds().no_output(); assert!(at.file_exists(FILE1)); - assert!(at.read_bytes(FILE1).is_empty()); + assert_eq!(at.read_bytes(FILE1), [] as [u8; 0]); } #[test] @@ -502,7 +502,7 @@ fn test_negative_size_with_space() { let (at, mut ucmd) = at_and_ucmd!(); ucmd.args(&["-s", "-1", FILE1]).succeeds().no_output(); assert!(at.file_exists(FILE1)); - assert!(at.read_bytes(FILE1).is_empty()); + assert_eq!(at.read_bytes(FILE1), [] as [u8; 0]); } #[test] diff --git a/tests/uutests/src/lib/util.rs b/tests/uutests/src/lib/util.rs index 7bee2cb49f6..8297328fa5c 100644 --- a/tests/uutests/src/lib/util.rs +++ b/tests/uutests/src/lib/util.rs @@ -3330,8 +3330,8 @@ mod tests { assert!(!result.succeeded()); result.failure(); result.fails_silently(); - assert!(result.stderr.is_empty()); - assert!(result.stdout.is_empty()); + std::assert_eq!(result.stderr, Vec::new()); + std::assert_eq!(result.stdout, Vec::new()); result.no_output(); result.no_stderr(); result.no_stdout(); @@ -3352,8 +3352,8 @@ mod tests { result.code_is(0); assert!(result.succeeded()); result.success(); - assert!(result.stderr.is_empty()); - assert!(result.stdout.is_empty()); + std::assert_eq!(result.stderr, Vec::new()); + std::assert_eq!(result.stdout, Vec::new()); result.no_output(); result.no_stderr(); result.no_stdout(); @@ -3391,7 +3391,7 @@ mod tests { result.code_is(0); assert!(result.succeeded()); result.success(); - assert!(result.stderr.is_empty()); + std::assert_eq!(result.stderr, Vec::new()); std::assert_eq!(result.stdout, vector); result.no_stderr(); result.stdout_is(string); @@ -3420,7 +3420,7 @@ mod tests { result.code_is(0); assert!(result.succeeded()); result.success(); - assert!(result.stdout.is_empty()); + std::assert_eq!(result.stdout, Vec::new()); result.no_stdout(); std::assert_eq!(result.stderr, vector); result.stderr_is(string);