Skip to content

Commit 3ee5079

Browse files
committed
Implement fmt::Display for Signal
2 parents 7c3782a + 8468990 commit 3ee5079

File tree

2 files changed

+48
-39
lines changed

2 files changed

+48
-39
lines changed

src/process.rs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -626,6 +626,50 @@ impl Signal {
626626
}
627627
}
628628

629+
impl fmt::Display for Signal {
630+
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
631+
f.write_str(match *self {
632+
Signal::HUP => "hangup",
633+
Signal::INTERRUPT => "interrupt",
634+
Signal::QUIT => "quit",
635+
Signal::ILLEGAL => "illegal",
636+
Signal::TRAP => "trap",
637+
Signal::ABORT => "abort",
638+
#[allow(unreachable_patterns)] // Same as ABORT.
639+
Signal::IOT => "iot",
640+
Signal::KILL => "kill",
641+
Signal::BUS => "bus",
642+
Signal::FP_ERROR => "floating-point-error",
643+
Signal::USER1 => "user-1",
644+
Signal::USER2 => "user-2",
645+
Signal::SEG_VAULT => "segfault",
646+
Signal::PIPE => "pipe",
647+
Signal::ALARM => "alarm",
648+
Signal::TERMINATION => "termination",
649+
Signal::CHILD => "child",
650+
Signal::CONTINUE => "continue",
651+
Signal::STOP => "stop",
652+
Signal::TERM_STOP => "terminal stop",
653+
Signal::TTY_IN => "terminal-input",
654+
Signal::TTY_OUT => "terminal-output",
655+
Signal::URGENT => "urgent",
656+
Signal::EXCEEDED_CPU => "exceeded-cpu",
657+
Signal::EXCEEDED_FILE_SIZE => "excess-file-size",
658+
Signal::VIRTUAL_ALARM => "virtual-alarm",
659+
Signal::PROFILE_ALARM => "profile-alarm",
660+
Signal::WINDOW_RESIZE => "window-change",
661+
Signal::IO => "I/O",
662+
#[cfg(any(target_os = "android", target_os = "linux"))]
663+
#[allow(unreachable_patterns)] // Same as IO.
664+
Signal::POLL => "poll",
665+
#[cfg(any(target_os = "android", target_os = "linux"))]
666+
Signal::PWR => "power-failure",
667+
Signal::SYS => "bad-syscall",
668+
_ => return write!(f, "Signal({})", self.0),
669+
})
670+
}
671+
}
672+
629673
/// Who to send a signal to, see [`send_signal`].
630674
#[derive(Copy, Clone, Debug)]
631675
pub enum To {

tests/signals.rs

Lines changed: 4 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -47,41 +47,6 @@ const SIGNALS: &[Signal] = &[
4747
Signal::SYS,
4848
];
4949

50-
const SIGNAL_NAMES: [&str; SIGNALS.len()] = [
51-
"SIGHUP",
52-
"SIGINT",
53-
"SIGQUIT",
54-
"SIGILL",
55-
"SIGTRAP",
56-
"SIGABRT",
57-
"SIGIOT",
58-
"SIGBUS",
59-
"SIGFPE",
60-
"SIGUSR1",
61-
"SIGUSR2",
62-
"SIGSEGV",
63-
"SIGPIPE",
64-
"SIGALRM",
65-
"SIGTERM",
66-
"SIGCHLD",
67-
"SIGCONT",
68-
"SIGTSTP",
69-
"SIGTTIN",
70-
"SIGTTOU",
71-
"SIGURG",
72-
"SIGXCPU",
73-
"SIGXFSZ",
74-
"SIGVTALRM",
75-
"SIGPROF",
76-
"SIGWINCH",
77-
"SIGIO",
78-
#[cfg(any(target_os = "android", target_os = "linux"))]
79-
"SIGPOLL",
80-
#[cfg(any(target_os = "android", target_os = "linux"))]
81-
"SIGPWR",
82-
"SIGSYS",
83-
];
84-
8550
fn main() {
8651
init();
8752
let start = Instant::now();
@@ -154,10 +119,10 @@ impl TestHarness {
154119
F: FnMut(&mut Ring, &Signals, Signal),
155120
{
156121
let signals = self.signals.as_ref().unwrap();
157-
for (signal, name) in SIGNALS.iter().copied().zip(SIGNAL_NAMES) {
122+
for signal in SIGNALS.into_iter().copied() {
158123
print_test_start(
159124
self.quiet,
160-
format_args!("{test_name} ({:?}, {name})", self.fd_kind),
125+
format_args!("{test_name} ({:?}, {signal}, {signal:?})", self.fd_kind),
161126
);
162127
// thread sanitizer can't deal with `SIGSYS` signal being send.
163128
#[cfg(feature = "nightly")]
@@ -215,10 +180,10 @@ impl TestHarness {
215180
fn test_receive_signals(&mut self) {
216181
let pid = std::process::id();
217182
let mut receive_signal = self.signals.take().unwrap().receive_signals();
218-
for (signal, name) in SIGNALS.into_iter().zip(SIGNAL_NAMES) {
183+
for signal in SIGNALS.into_iter() {
219184
print_test_start(
220185
self.quiet,
221-
format_args!("receive_signals ({:?}, {name})", self.fd_kind),
186+
format_args!("receive_signals ({:?}, {signal}, {signal:?})", self.fd_kind),
222187
);
223188
// thread sanitizer can't deal with `SIGSYS` signal being send.
224189
#[cfg(feature = "nightly")]

0 commit comments

Comments
 (0)