// +build !windows package main import ( "bufio" "fmt" "io/ioutil" "os" "os/exec" "unicode" "github.com/go-check/check" "github.com/kr/pty" ) // #5979 func (s *DockerSuite) TestEventsRedirectStdout(c *check.C) { since := daemonTime(c).Unix() dockerCmd(c, "run", "busybox", "true") file, err := ioutil.TempFile("", "") if err != nil { c.Fatalf("could not create temp file: %v", err) } defer os.Remove(file.Name()) command := fmt.Sprintf("%s events --since=%d --until=%d > %s", dockerBinary, since, daemonTime(c).Unix(), file.Name()) _, tty, err := pty.Open() if err != nil { c.Fatalf("Could not open pty: %v", err) } cmd := exec.Command("sh", "-c", command) cmd.Stdin = tty cmd.Stdout = tty cmd.Stderr = tty if err := cmd.Run(); err != nil { c.Fatalf("run err for command %q: %v", command, err) } scanner := bufio.NewScanner(file) for scanner.Scan() { for _, ch := range scanner.Text() { if unicode.IsControl(ch) { c.Fatalf("found control character %v", []byte(string(ch))) } } } if err := scanner.Err(); err != nil { c.Fatalf("Scan err for command %q: %v", command, err) } }