FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
docker/integration-cli/docker_cli_exec_unix_test.go at master · Eagle-X/docker · GitHub
Eagle-X
/
docker
Public
forked from
moby/moby
Notifications
You must be signed in to change notification settings
Fork
0
Star
1
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
docker
/
integration-cli
/
docker_cli_exec_unix_test.go
Copy path
More file actions
More file actions
Latest commit
History
History
History
74 lines (61 loc) · 1.67 KB
Breadcrumbs
docker
/
integration-cli
/
docker_cli_exec_unix_test.go
Copy path
File metadata and controls
74 lines (61 loc) · 1.67 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// +build !windows,!test_no_exec
package
main
import
(
"bytes"
"io"
"os/exec"
"strings"
"time"
"github.com/go-check/check"
"github.com/kr/pty"
)
// regression test for #12546
func
(
s
*
DockerSuite
)
TestExecInteractiveStdinClose
(
c
*
check.
C
) {
testRequires
(
c
,
DaemonIsLinux
)
out
,
_
:=
dockerCmd
(
c
,
"run"
,
"-itd"
,
"busybox"
,
"/bin/cat"
)
contID
:=
strings
.
TrimSpace
(
out
)
cmd
:=
exec
.
Command
(
dockerBinary
,
"exec"
,
"-i"
,
contID
,
"echo"
,
"-n"
,
"hello"
)
p
,
err
:=
pty
.
Start
(
cmd
)
if
err
!=
nil
{
c
.
Fatal
(
err
)
}
b
:=
bytes
.
NewBuffer
(
nil
)
go
io
.
Copy
(
b
,
p
)
ch
:=
make
(
chan
error
)
go
func
() {
ch
<-
cmd
.
Wait
() }()
select
{
case
err
:=
<-
ch
:
if
err
!=
nil
{
c
.
Errorf
(
"cmd finished with error %v"
,
err
)
}
if
output
:=
b
.
String
();
strings
.
TrimSpace
(
output
)
!=
"hello"
{
c
.
Fatalf
(
"Unexpected output %s"
,
output
)
}
case
<-
time
.
After
(
1
*
time
.
Second
):
c
.
Fatal
(
"timed out running docker exec"
)
}
}
func
(
s
*
DockerSuite
)
TestExecTTY
(
c
*
check.
C
) {
testRequires
(
c
,
DaemonIsLinux
)
dockerCmd
(
c
,
"run"
,
"-d"
,
"--name=test"
,
"busybox"
,
"sh"
,
"-c"
,
"echo hello > /foo && top"
)
cmd
:=
exec
.
Command
(
dockerBinary
,
"exec"
,
"-it"
,
"test"
,
"sh"
)
p
,
err
:=
pty
.
Start
(
cmd
)
c
.
Assert
(
err
,
check
.
IsNil
)
defer
p
.
Close
()
_
,
err
=
p
.
Write
([]
byte
(
"cat /foo && exit
\n
"
))
c
.
Assert
(
err
,
check
.
IsNil
)
chErr
:=
make
(
chan
error
)
go
func
() {
chErr
<-
cmd
.
Wait
()
}()
select
{
case
err
:=
<-
chErr
:
c
.
Assert
(
err
,
check
.
IsNil
)
case
<-
time
.
After
(
3
*
time
.
Second
):
c
.
Fatal
(
"timeout waiting for exec to exit"
)
}
buf
:=
make
([]
byte
,
256
)
read
,
err
:=
p
.
Read
(
buf
)
c
.
Assert
(
err
,
check
.
IsNil
)
c
.
Assert
(
bytes
.
Contains
(
buf
, []
byte
(
"hello"
)),
check
.
Equals
,
true
,
check
.
Commentf
(
string
(
buf
[:
read
])))
}
Back
|
FazBrowse Home
|
New Git URL