123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- // +build darwin linux
- package signal // import "github.com/docker/docker/pkg/signal"
- import (
- "os"
- "syscall"
- "testing"
- "gotest.tools/v3/assert"
- is "gotest.tools/v3/assert/cmp"
- )
- func TestCatchAll(t *testing.T) {
- sigs := make(chan os.Signal, 1)
- CatchAll(sigs)
- defer StopCatch(sigs)
- listOfSignals := map[string]string{
- "CONT": syscall.SIGCONT.String(),
- "HUP": syscall.SIGHUP.String(),
- "CHLD": syscall.SIGCHLD.String(),
- "ILL": syscall.SIGILL.String(),
- "FPE": syscall.SIGFPE.String(),
- "CLD": syscall.SIGCLD.String(),
- }
- for sigStr := range listOfSignals {
- if signal, ok := SignalMap[sigStr]; ok {
- syscall.Kill(syscall.Getpid(), signal)
- s := <-sigs
- assert.Check(t, is.Equal(s.String(), signal.String()))
- }
- }
- }
- func TestStopCatch(t *testing.T) {
- signal := SignalMap["HUP"]
- channel := make(chan os.Signal, 1)
- CatchAll(channel)
- syscall.Kill(syscall.Getpid(), signal)
- signalString := <-channel
- assert.Check(t, is.Equal(signalString.String(), signal.String()))
- StopCatch(channel)
- _, ok := <-channel
- assert.Check(t, is.Equal(ok, false))
- }
|