github.com/grange74/docker@v1.6.0-rc3/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  }