@@ -29,7 +29,11 @@ func TestRun(t *testing.T) {
29
29
Args : []string {"sh" , "-c" , "cat" },
30
30
}
31
31
var stderr , stdout bytes.Buffer
32
- hookErr , err := Run (ctx , hook , []byte ("{}" ), & stdout , & stderr , DefaultPostKillTimeout )
32
+ cwd , err := os .Getwd ()
33
+ if err != nil {
34
+ t .Fatal (err )
35
+ }
36
+ hookErr , err := Run (ctx , hook , cwd , []byte ("{}" ), & stdout , & stderr , DefaultPostKillTimeout )
33
37
if err != nil {
34
38
t .Fatal (err )
35
39
}
@@ -46,7 +50,11 @@ func TestRunIgnoreOutput(t *testing.T) {
46
50
Path : path ,
47
51
Args : []string {"sh" , "-c" , "cat" },
48
52
}
49
- hookErr , err := Run (ctx , hook , []byte ("{}" ), nil , nil , DefaultPostKillTimeout )
53
+ cwd , err := os .Getwd ()
54
+ if err != nil {
55
+ t .Fatal (err )
56
+ }
57
+ hookErr , err := Run (ctx , hook , cwd , []byte ("{}" ), nil , nil , DefaultPostKillTimeout )
50
58
if err != nil {
51
59
t .Fatal (err )
52
60
}
@@ -60,7 +68,11 @@ func TestRunFailedStart(t *testing.T) {
60
68
hook := & rspec.Hook {
61
69
Path : "/does/not/exist" ,
62
70
}
63
- hookErr , err := Run (ctx , hook , []byte ("{}" ), nil , nil , DefaultPostKillTimeout )
71
+ cwd , err := os .Getwd ()
72
+ if err != nil {
73
+ t .Fatal (err )
74
+ }
75
+ hookErr , err := Run (ctx , hook , cwd , []byte ("{}" ), nil , nil , DefaultPostKillTimeout )
64
76
if err == nil {
65
77
t .Fatal ("unexpected success" )
66
78
}
@@ -91,6 +103,10 @@ func parseEnvironment(input string) (env map[string]string, err error) {
91
103
92
104
func TestRunEnvironment (t * testing.T ) {
93
105
ctx := context .Background ()
106
+ cwd , err := os .Getwd ()
107
+ if err != nil {
108
+ t .Fatal (err )
109
+ }
94
110
hook := & rspec.Hook {
95
111
Path : path ,
96
112
Args : []string {"sh" , "-c" , "env" },
@@ -125,7 +141,7 @@ func TestRunEnvironment(t *testing.T) {
125
141
t .Run (test .name , func (t * testing.T ) {
126
142
var stderr , stdout bytes.Buffer
127
143
hook .Env = test .env
128
- hookErr , err := Run (ctx , hook , []byte ("{}" ), & stdout , & stderr , DefaultPostKillTimeout )
144
+ hookErr , err := Run (ctx , hook , cwd , []byte ("{}" ), & stdout , & stderr , DefaultPostKillTimeout )
129
145
if err != nil {
130
146
t .Fatal (err )
131
147
}
@@ -143,11 +159,34 @@ func TestRunEnvironment(t *testing.T) {
143
159
}
144
160
}
145
161
162
+ func TestRunCwd (t * testing.T ) {
163
+ ctx := context .Background ()
164
+ hook := & rspec.Hook {
165
+ Path : path ,
166
+ Args : []string {"sh" , "-c" , "pwd" },
167
+ }
168
+ cwd := "/path/to/container/userdata"
169
+ var stderr , stdout bytes.Buffer
170
+ hookErr , err := Run (ctx , hook , cwd , []byte ("{}" ), & stdout , & stderr , DefaultPostKillTimeout )
171
+ if err != nil {
172
+ t .Fatal (err )
173
+ }
174
+ if hookErr != nil {
175
+ t .Fatal (hookErr )
176
+ }
177
+ assert .Equal (t , "" , stderr .String ())
178
+ assert .Equal (t , stdout .String (), cwd )
179
+ }
180
+
146
181
func TestRunCancel (t * testing.T ) {
147
182
hook := & rspec.Hook {
148
183
Path : path ,
149
184
Args : []string {"sh" , "-c" , "echo waiting; sleep 2; echo done" },
150
185
}
186
+ cwd , err := os .Getwd ()
187
+ if err != nil {
188
+ t .Fatal (err )
189
+ }
151
190
one := 1
152
191
for _ , tt := range []struct {
153
192
name string
@@ -186,7 +225,7 @@ func TestRunCancel(t *testing.T) {
186
225
defer cancel ()
187
226
}
188
227
hook .Timeout = test .hookTimeout
189
- hookErr , err := Run (ctx , hook , []byte ("{}" ), & stdout , & stderr , DefaultPostKillTimeout )
228
+ hookErr , err := Run (ctx , hook , cwd , []byte ("{}" ), & stdout , & stderr , DefaultPostKillTimeout )
190
229
assert .Equal (t , test .expectedRunError , err )
191
230
if test .expectedHookError == "" {
192
231
if hookErr != nil {
@@ -204,11 +243,15 @@ func TestRunCancel(t *testing.T) {
204
243
func TestRunKillTimeout (t * testing.T ) {
205
244
ctx , cancel := context .WithTimeout (context .Background (), time .Duration (500 )* time .Millisecond )
206
245
defer cancel ()
246
+ cwd , err := os .Getwd ()
247
+ if err != nil {
248
+ t .Fatal (err )
249
+ }
207
250
hook := & rspec.Hook {
208
251
Path : path ,
209
252
Args : []string {"sh" , "-c" , "sleep 1" },
210
253
}
211
- hookErr , err := Run (ctx , hook , []byte ("{}" ), nil , nil , time .Duration (0 ))
254
+ hookErr , err := Run (ctx , hook , cwd , []byte ("{}" ), nil , nil , time .Duration (0 ))
212
255
assert .Equal (t , context .DeadlineExceeded , err )
213
256
assert .Regexp (t , "^(failed to reap process within 0s of the kill signal|executing \\ [sh -c sleep 1]: signal: killed)$" , hookErr )
214
257
}
0 commit comments