github.com/brianfoshee/docker@v1.6.0/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 "testing" 12 "unicode" 13 14 "github.com/kr/pty" 15 ) 16 17 // #5979 18 func TestEventsRedirectStdout(t *testing.T) { 19 since := daemonTime(t).Unix() 20 dockerCmd(t, "run", "busybox", "true") 21 defer deleteAllContainers() 22 23 file, err := ioutil.TempFile("", "") 24 if err != nil { 25 t.Fatalf("could not create temp file: %v", err) 26 } 27 defer os.Remove(file.Name()) 28 29 command := fmt.Sprintf("%s events --since=%d --until=%d > %s", dockerBinary, since, daemonTime(t).Unix(), file.Name()) 30 _, tty, err := pty.Open() 31 if err != nil { 32 t.Fatalf("Could not open pty: %v", err) 33 } 34 cmd := exec.Command("sh", "-c", command) 35 cmd.Stdin = tty 36 cmd.Stdout = tty 37 cmd.Stderr = tty 38 if err := cmd.Run(); err != nil { 39 t.Fatalf("run err for command %q: %v", command, err) 40 } 41 42 scanner := bufio.NewScanner(file) 43 for scanner.Scan() { 44 for _, c := range scanner.Text() { 45 if unicode.IsControl(c) { 46 t.Fatalf("found control character %v", []byte(string(c))) 47 } 48 } 49 } 50 if err := scanner.Err(); err != nil { 51 t.Fatalf("Scan err for command %q: %v", command, err) 52 } 53 54 logDone("events - redirect stdout") 55 }