|
@@ -4,6 +4,7 @@ package main
|
|
|
|
|
|
import (
|
|
import (
|
|
"bufio"
|
|
"bufio"
|
|
|
|
+ "io/ioutil"
|
|
"os/exec"
|
|
"os/exec"
|
|
"strings"
|
|
"strings"
|
|
"time"
|
|
"time"
|
|
@@ -23,7 +24,7 @@ func (s *DockerSuite) TestAttachClosedOnContainerStop(c *check.C) {
|
|
id := strings.TrimSpace(out)
|
|
id := strings.TrimSpace(out)
|
|
c.Assert(waitRun(id), check.IsNil)
|
|
c.Assert(waitRun(id), check.IsNil)
|
|
|
|
|
|
- _, tty, err := pty.Open()
|
|
|
|
|
|
+ pty, tty, err := pty.Open()
|
|
c.Assert(err, check.IsNil)
|
|
c.Assert(err, check.IsNil)
|
|
|
|
|
|
attachCmd := exec.Command(dockerBinary, "attach", id)
|
|
attachCmd := exec.Command(dockerBinary, "attach", id)
|
|
@@ -35,6 +36,7 @@ func (s *DockerSuite) TestAttachClosedOnContainerStop(c *check.C) {
|
|
|
|
|
|
errChan := make(chan error)
|
|
errChan := make(chan error)
|
|
go func() {
|
|
go func() {
|
|
|
|
+ time.Sleep(300 * time.Millisecond)
|
|
defer close(errChan)
|
|
defer close(errChan)
|
|
// Container is waiting for us to signal it to stop
|
|
// Container is waiting for us to signal it to stop
|
|
dockerCmd(c, "stop", id)
|
|
dockerCmd(c, "stop", id)
|
|
@@ -48,7 +50,9 @@ func (s *DockerSuite) TestAttachClosedOnContainerStop(c *check.C) {
|
|
|
|
|
|
select {
|
|
select {
|
|
case err := <-errChan:
|
|
case err := <-errChan:
|
|
- c.Assert(err, check.IsNil)
|
|
|
|
|
|
+ tty.Close()
|
|
|
|
+ out, _ := ioutil.ReadAll(pty)
|
|
|
|
+ c.Assert(err, check.IsNil, check.Commentf("out: %v", string(out)))
|
|
case <-time.After(attachWait):
|
|
case <-time.After(attachWait):
|
|
c.Fatal("timed out without attach returning")
|
|
c.Fatal("timed out without attach returning")
|
|
}
|
|
}
|