From 333e4d9fe91f836902831d260951d0ee0bf2a71b Mon Sep 17 00:00:00 2001 From: Haisham <47662901+m-haisham@users.noreply.github.com> Date: Sun, 14 Apr 2024 18:08:51 +0500 Subject: [PATCH] kill: print --table as vertical (#6216) * kill: print --table as vertical * kill: remove signal padding on --table * kill: skip exit signal in --table * kill: replace "skip" with "filter" --------- Co-authored-by: Daniel Hofstetter --- src/uu/kill/src/kill.rs | 15 +++++++-------- tests/by-util/test_kill.rs | 23 +++++++++++++++++++++++ 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/uu/kill/src/kill.rs b/src/uu/kill/src/kill.rs index a641ff0c8..9ea51694d 100644 --- a/src/uu/kill/src/kill.rs +++ b/src/uu/kill/src/kill.rs @@ -142,15 +142,14 @@ fn handle_obsolete(args: &mut Vec) -> Option { } fn table() { - let name_width = ALL_SIGNALS.iter().map(|n| n.len()).max().unwrap(); - - for (idx, signal) in ALL_SIGNALS.iter().enumerate() { - print!("{0: >#2} {1: <#2$}", idx, signal, name_width + 2); - if (idx + 1) % 7 == 0 { - println!(); - } + // GNU kill doesn't list the EXIT signal with --table, so we ignore it, too + for (idx, signal) in ALL_SIGNALS + .iter() + .enumerate() + .filter(|(_, s)| **s != "EXIT") + { + println!("{0: >#2} {1}", idx, signal); } - println!(); } fn print_signal(signal_name_or_value: &str) -> UResult<()> { diff --git a/tests/by-util/test_kill.rs b/tests/by-util/test_kill.rs index 61d18686a..5393d163a 100644 --- a/tests/by-util/test_kill.rs +++ b/tests/by-util/test_kill.rs @@ -83,6 +83,29 @@ fn test_kill_list_all_signals_as_table() { .stdout_contains("HUP"); } +#[test] +fn test_kill_table_starts_at_1() { + new_ucmd!() + .arg("-t") + .succeeds() + .stdout_matches(&Regex::new("^\\s?1\\sHUP").unwrap()); +} + +#[test] +fn test_kill_table_lists_all_vertically() { + // Check for a few signals. Do not try to be comprehensive. + let command = new_ucmd!().arg("-t").succeeds(); + let signals = command + .stdout_str() + .split('\n') + .flat_map(|line| line.trim().split(" ").nth(1)) + .collect::>(); + + assert!(signals.contains(&"KILL")); + assert!(signals.contains(&"TERM")); + assert!(signals.contains(&"HUP")); +} + #[test] fn test_kill_list_one_signal_from_name() { // Use SIGKILL because it is 9 on all unixes.