|
@@ -1,12 +1,18 @@
|
|
|
package main
|
|
|
|
|
|
import (
|
|
|
+ "bufio"
|
|
|
"fmt"
|
|
|
+ "io/ioutil"
|
|
|
+ "os"
|
|
|
"os/exec"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
"testing"
|
|
|
"time"
|
|
|
+ "unicode"
|
|
|
+
|
|
|
+ "github.com/kr/pty"
|
|
|
)
|
|
|
|
|
|
func TestEventsUntag(t *testing.T) {
|
|
@@ -166,3 +172,46 @@ func TestEventsImageUntagDelete(t *testing.T) {
|
|
|
}
|
|
|
logDone("events - image untag, delete is logged")
|
|
|
}
|
|
|
+
|
|
|
+// #5979
|
|
|
+func TestEventsRedirectStdout(t *testing.T) {
|
|
|
+
|
|
|
+ since := time.Now().Unix()
|
|
|
+
|
|
|
+ cmd(t, "run", "busybox", "true")
|
|
|
+
|
|
|
+ defer deleteAllContainers()
|
|
|
+
|
|
|
+ file, err := ioutil.TempFile("", "")
|
|
|
+ if err != nil {
|
|
|
+ t.Fatalf("could not create temp file: %v", err)
|
|
|
+ }
|
|
|
+ defer os.Remove(file.Name())
|
|
|
+
|
|
|
+ command := fmt.Sprintf("%s events --since=%d --until=%d > %s", dockerBinary, since, time.Now().Unix(), file.Name())
|
|
|
+ _, tty, err := pty.Open()
|
|
|
+ if err != nil {
|
|
|
+ t.Fatalf("Could not open pty: %v", err)
|
|
|
+ }
|
|
|
+ cmd := exec.Command("sh", "-c", command)
|
|
|
+ cmd.Stdin = tty
|
|
|
+ cmd.Stdout = tty
|
|
|
+ cmd.Stderr = tty
|
|
|
+ if err := cmd.Run(); err != nil {
|
|
|
+ t.Fatalf("run err for command %q: %v", command, err)
|
|
|
+ }
|
|
|
+
|
|
|
+ scanner := bufio.NewScanner(file)
|
|
|
+ for scanner.Scan() {
|
|
|
+ for _, c := range scanner.Text() {
|
|
|
+ if unicode.IsControl(c) {
|
|
|
+ t.Fatalf("found control character %v", []byte(string(c)))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if err := scanner.Err(); err != nil {
|
|
|
+ t.Fatalf("Scan err for command %q: %v", command, err)
|
|
|
+ }
|
|
|
+
|
|
|
+ logDone("events - redirect stdout")
|
|
|
+}
|