github.com/slava-ustovytski/docker@v1.8.2-rc1/integration-cli/docker_cli_events_unix_test.go (about) 1 // +build !windows 2 3 package main 4 5 import ( 6 "bufio" 7 "fmt" 8 "io/ioutil" 9 "os" 10 "os/exec" 11 "unicode" 12 13 "github.com/go-check/check" 14 "github.com/kr/pty" 15 ) 16 17 // #5979 18 func (s *DockerSuite) TestEventsRedirectStdout(c *check.C) { 19 since := daemonTime(c).Unix() 20 dockerCmd(c, "run", "busybox", "true") 21 22 file, err := ioutil.TempFile("", "") 23 if err != nil { 24 c.Fatalf("could not create temp file: %v", err) 25 } 26 defer os.Remove(file.Name()) 27 28 command := fmt.Sprintf("%s events --since=%d --until=%d > %s", dockerBinary, since, daemonTime(c).Unix(), file.Name()) 29 _, tty, err := pty.Open() 30 if err != nil { 31 c.Fatalf("Could not open pty: %v", err) 32 } 33 cmd := exec.Command("sh", "-c", command) 34 cmd.Stdin = tty 35 cmd.Stdout = tty 36 cmd.Stderr = tty 37 if err := cmd.Run(); err != nil { 38 c.Fatalf("run err for command %q: %v", command, err) 39 } 40 41 scanner := bufio.NewScanner(file) 42 for scanner.Scan() { 43 for _, ch := range scanner.Text() { 44 if unicode.IsControl(ch) { 45 c.Fatalf("found control character %v", []byte(string(ch))) 46 } 47 } 48 } 49 if err := scanner.Err(); err != nil { 50 c.Fatalf("Scan err for command %q: %v", command, err) 51 } 52 53 }