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