Skip to content

Commit 26634eb

Browse files
committed
[nextest-runner] also handle SIGQUIT
Noticed we were missing a handler for SIGQUIT.
1 parent 8270b5b commit 26634eb

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

nextest-runner/src/runner.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1940,7 +1940,9 @@ where
19401940

19411941
let cancel_reason = match event {
19421942
#[cfg(unix)]
1943-
ShutdownEvent::Hangup | ShutdownEvent::Term => CancelReason::Signal,
1943+
ShutdownEvent::Hangup | ShutdownEvent::Term | ShutdownEvent::Quit => {
1944+
CancelReason::Signal
1945+
}
19441946
ShutdownEvent::Interrupt => CancelReason::Interrupt,
19451947
};
19461948

@@ -2251,7 +2253,7 @@ mod imp {
22512253
#[cfg(unix)]
22522254
mod imp {
22532255
use super::*;
2254-
use libc::{SIGCONT, SIGHUP, SIGINT, SIGKILL, SIGSTOP, SIGTERM, SIGTSTP};
2256+
use libc::{SIGCONT, SIGHUP, SIGINT, SIGKILL, SIGQUIT, SIGSTOP, SIGTERM, SIGTSTP};
22552257
use std::os::unix::process::CommandExt;
22562258

22572259
// This is a no-op on non-windows platforms.
@@ -2322,6 +2324,7 @@ mod imp {
23222324
TerminateMode::Timeout => SIGTERM,
23232325
TerminateMode::Signal(ShutdownForwardEvent::Once(ShutdownEvent::Hangup)) => SIGHUP,
23242326
TerminateMode::Signal(ShutdownForwardEvent::Once(ShutdownEvent::Term)) => SIGTERM,
2327+
TerminateMode::Signal(ShutdownForwardEvent::Once(ShutdownEvent::Quit)) => SIGQUIT,
23252328
TerminateMode::Signal(ShutdownForwardEvent::Once(ShutdownEvent::Interrupt)) => {
23262329
SIGINT
23272330
}

nextest-runner/src/signal.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ mod imp {
6868
sigint: SignalWithDone,
6969
sighup: SignalWithDone,
7070
sigterm: SignalWithDone,
71+
sigquit: SignalWithDone,
7172
sigtstp: SignalWithDone,
7273
sigcont: SignalWithDone,
7374
}
@@ -77,13 +78,15 @@ mod imp {
7778
let sigint = SignalWithDone::new(SignalKind::interrupt())?;
7879
let sighup = SignalWithDone::new(SignalKind::hangup())?;
7980
let sigterm = SignalWithDone::new(SignalKind::terminate())?;
81+
let sigquit = SignalWithDone::new(SignalKind::quit())?;
8082
let sigtstp = SignalWithDone::new(SignalKind::from_raw(libc::SIGTSTP))?;
8183
let sigcont = SignalWithDone::new(SignalKind::from_raw(libc::SIGCONT))?;
8284

8385
Ok(Self {
8486
sigint,
8587
sighup,
8688
sigterm,
89+
sigquit,
8790
sigtstp,
8891
sigcont,
8992
})
@@ -110,6 +113,12 @@ mod imp {
110113
None => self.sigterm.done = true,
111114
}
112115
}
116+
recv = self.sigquit.signal.recv(), if !self.sigquit.done => {
117+
match recv {
118+
Some(()) => break Some(SignalEvent::Shutdown(ShutdownEvent::Quit)),
119+
None => self.sigquit.done = true,
120+
}
121+
}
113122
recv = self.sigtstp.signal.recv(), if !self.sigtstp.done => {
114123
match recv {
115124
Some(()) => break Some(SignalEvent::JobControl(JobControlEvent::Stop)),
@@ -206,5 +215,7 @@ pub(crate) enum ShutdownEvent {
206215
Hangup,
207216
#[cfg(unix)]
208217
Term,
218+
#[cfg(unix)]
219+
Quit,
209220
Interrupt,
210221
}

0 commit comments

Comments
 (0)