github.com/rentongzhang/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  }