package main import ( "bytes" "io" "os/exec" "testing" ) func TestLoginWithoutTTY(t *testing.T) { cmd := exec.Command(dockerBinary, "login") // create a buffer with text then a new line as a return buf := bytes.NewBuffer([]byte("buffer test string \n")) // use a pipe for stdin and manually copy the data so that // the process does not get the TTY in, err := cmd.StdinPipe() if err != nil { t.Fatal(err) } // copy the bytes into the commands stdin along with a new line go io.Copy(in, buf) // run the command and block until it's done if err := cmd.Run(); err == nil { t.Fatal("Expected non nil err when loginning in & TTY not available") } logDone("login - login without TTY") }