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