signal_linux_test.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // +build darwin linux
  2. package signal
  3. import (
  4. "os"
  5. "syscall"
  6. "testing"
  7. "time"
  8. "github.com/stretchr/testify/assert"
  9. )
  10. func TestCatchAll(t *testing.T) {
  11. sigs := make(chan os.Signal, 1)
  12. CatchAll(sigs)
  13. defer StopCatch(sigs)
  14. listOfSignals := map[string]string{
  15. "CONT": syscall.SIGCONT.String(),
  16. "HUP": syscall.SIGHUP.String(),
  17. "CHLD": syscall.SIGCHLD.String(),
  18. "ILL": syscall.SIGILL.String(),
  19. "FPE": syscall.SIGFPE.String(),
  20. "CLD": syscall.SIGCLD.String(),
  21. }
  22. for sigStr := range listOfSignals {
  23. signal, ok := SignalMap[sigStr]
  24. if ok {
  25. go func() {
  26. time.Sleep(1 * time.Millisecond)
  27. syscall.Kill(syscall.Getpid(), signal)
  28. }()
  29. s := <-sigs
  30. assert.EqualValues(t, s.String(), signal.String())
  31. }
  32. }
  33. }
  34. func TestStopCatch(t *testing.T) {
  35. signal := SignalMap["HUP"]
  36. channel := make(chan os.Signal, 1)
  37. CatchAll(channel)
  38. go func() {
  39. time.Sleep(1 * time.Millisecond)
  40. syscall.Kill(syscall.Getpid(), signal)
  41. }()
  42. signalString := <-channel
  43. assert.EqualValues(t, signalString.String(), signal.String())
  44. StopCatch(channel)
  45. _, ok := <-channel
  46. assert.EqualValues(t, ok, false)
  47. }