Skip to content

Commit f85b045

Browse files
committed
Add an option to the manual-test command of the test helper
1 parent d101c42 commit f85b045

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

Sources/signal-handling-tests-helper/ManualTest.swift

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,19 @@ struct ManualTest : ParsableCommand {
1212

1313
static var logger: Logger?
1414

15+
enum DelayMode : String, ExpressibleByArgument {
16+
case unsig
17+
case block
18+
}
19+
20+
@Option
21+
var mode: DelayMode = .unsig
22+
1523
func run() throws {
16-
// try SigactionDelayer_Block.bootstrap(for: Signal.toForwardToSubprocesses)
24+
if mode == .block {
25+
try SigactionDelayer_Block.bootstrap(for: Signal.toForwardToSubprocesses)
26+
}
27+
1728
LoggingSystem.bootstrap{ _ in CLTLogger() }
1829

1930
var logger = Logger(label: "main")
@@ -29,15 +40,24 @@ struct ManualTest : ParsableCommand {
2940
s.activate()
3041

3142
let delayedSignal = Signal.terminated
32-
_ = try SigactionDelayer_Unsig.registerDelayedSigaction(delayedSignal, handler: { _, doneHandler in
43+
let handler: DelayedSigactionHandler = { _, doneHandler in
3344
DispatchQueue.global().asyncAfter(deadline: .now() + .milliseconds(500), execute: {
3445
logger.info("Allowing signal to be resent")
3546
doneHandler(true)
3647
})
37-
})
48+
}
49+
switch mode {
50+
case .unsig: _ = try SigactionDelayer_Unsig.registerDelayedSigaction(delayedSignal, handler: handler)
51+
case .block: _ = try SigactionDelayer_Block.registerDelayedSigaction(delayedSignal, handler: handler)
52+
}
53+
54+
55+
sleep(1)
56+
logger.info("Sending signal \(delayedSignal) to myself (1st time)")
57+
kill(getpid(), delayedSignal.rawValue)
3858

3959
sleep(1)
40-
logger.info("Sending signal \(delayedSignal) to myself")
60+
logger.info("Sending signal \(delayedSignal) to myself (2nd time)")
4161
kill(getpid(), delayedSignal.rawValue)
4262

4363
sleep(3)

0 commit comments

Comments
 (0)