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