elvish/pkg/cli/tty_unix_test.go
Qi Xiao f7cb556d9b Require Go 1.18.
- Run "go fix" to remove legacy build tags

- Use staticcheck@master until it has a release that supports Go 1.18

- Turn off autocrlf for Windows tasks
2022-03-20 15:28:23 +00:00

48 lines
933 B
Go

//go:build !windows && !plan9
package cli_test
import (
"os"
"testing"
"golang.org/x/sys/unix"
. "src.elv.sh/pkg/cli"
)
func TestTTYSignal(t *testing.T) {
tty := NewTTY(os.Stdin, os.Stderr)
sigch := tty.NotifySignals()
err := unix.Kill(unix.Getpid(), unix.SIGUSR1)
if err != nil {
t.Skip("cannot send SIGUSR1 to myself:", err)
}
if sig := nextSig(sigch); sig != unix.SIGUSR1 {
t.Errorf("Got signal %v, want SIGUSR1", sig)
}
tty.StopSignals()
err = unix.Kill(unix.Getpid(), unix.SIGUSR2)
if err != nil {
t.Skip("cannot send SIGUSR2 to myself:", err)
}
if sig := nextSig(sigch); sig != nil {
t.Errorf("Got signal %v, want nil", sig)
}
}
// Gets the next signal from the channel, ignoring all SIGURG generated by the
// Go runtime. See https://github.com/golang/go/issues/37942.
func nextSig(sigch <-chan os.Signal) os.Signal {
for {
sig := <-sigch
if sig != unix.SIGURG {
return sig
}
}
}