@@ -2,7 +2,9 @@ package container
2
2
3
3
import (
4
4
"bufio"
5
+ "bytes"
5
6
"context"
7
+ "fmt"
6
8
"io"
7
9
"net"
8
10
"strings"
@@ -75,6 +77,11 @@ func (m *mockDockerClient) ContainerExecInspect(ctx context.Context, execID stri
75
77
return args .Get (0 ).(types.ContainerExecInspect ), args .Error (1 )
76
78
}
77
79
80
+ func (m * mockDockerClient ) CopyToContainer (ctx context.Context , id string , path string , content io.Reader , options types.CopyToContainerOptions ) error {
81
+ args := m .Called (ctx , id , path , content , options )
82
+ return args .Error (0 )
83
+ }
84
+
78
85
type endlessReader struct {
79
86
io.Reader
80
87
}
@@ -165,5 +172,77 @@ func TestDockerExecFailure(t *testing.T) {
165
172
client .AssertExpectations (t )
166
173
}
167
174
175
+ func TestDockerCopyTarStream (t * testing.T ) {
176
+ ctx := context .Background ()
177
+
178
+ conn := & mockConn {}
179
+
180
+ client := & mockDockerClient {}
181
+ client .On ("CopyToContainer" , ctx , "123" , "/" , mock .Anything , mock .AnythingOfType ("types.CopyToContainerOptions" )).Return (nil )
182
+ client .On ("CopyToContainer" , ctx , "123" , "/var/run/act" , mock .Anything , mock .AnythingOfType ("types.CopyToContainerOptions" )).Return (nil )
183
+ cr := & containerReference {
184
+ id : "123" ,
185
+ cli : client ,
186
+ input : & NewContainerInput {
187
+ Image : "image" ,
188
+ },
189
+ }
190
+
191
+ _ = cr .CopyTarStream (ctx , "/var/run/act" , & bytes.Buffer {})
192
+
193
+ conn .AssertExpectations (t )
194
+ client .AssertExpectations (t )
195
+ }
196
+
197
+ func TestDockerCopyTarStreamErrorInCopyFiles (t * testing.T ) {
198
+ ctx := context .Background ()
199
+
200
+ conn := & mockConn {}
201
+
202
+ merr := fmt .Errorf ("Failure" )
203
+
204
+ client := & mockDockerClient {}
205
+ client .On ("CopyToContainer" , ctx , "123" , "/" , mock .Anything , mock .AnythingOfType ("types.CopyToContainerOptions" )).Return (merr )
206
+ client .On ("CopyToContainer" , ctx , "123" , "/" , mock .Anything , mock .AnythingOfType ("types.CopyToContainerOptions" )).Return (merr )
207
+ cr := & containerReference {
208
+ id : "123" ,
209
+ cli : client ,
210
+ input : & NewContainerInput {
211
+ Image : "image" ,
212
+ },
213
+ }
214
+
215
+ err := cr .CopyTarStream (ctx , "/var/run/act" , & bytes.Buffer {})
216
+ assert .ErrorIs (t , err , merr )
217
+
218
+ conn .AssertExpectations (t )
219
+ client .AssertExpectations (t )
220
+ }
221
+
222
+ func TestDockerCopyTarStreamErrorInMkdir (t * testing.T ) {
223
+ ctx := context .Background ()
224
+
225
+ conn := & mockConn {}
226
+
227
+ merr := fmt .Errorf ("Failure" )
228
+
229
+ client := & mockDockerClient {}
230
+ client .On ("CopyToContainer" , ctx , "123" , "/" , mock .Anything , mock .AnythingOfType ("types.CopyToContainerOptions" )).Return (nil )
231
+ client .On ("CopyToContainer" , ctx , "123" , "/var/run/act" , mock .Anything , mock .AnythingOfType ("types.CopyToContainerOptions" )).Return (merr )
232
+ cr := & containerReference {
233
+ id : "123" ,
234
+ cli : client ,
235
+ input : & NewContainerInput {
236
+ Image : "image" ,
237
+ },
238
+ }
239
+
240
+ err := cr .CopyTarStream (ctx , "/var/run/act" , & bytes.Buffer {})
241
+ assert .ErrorIs (t , err , merr )
242
+
243
+ conn .AssertExpectations (t )
244
+ client .AssertExpectations (t )
245
+ }
246
+
168
247
// Type assert containerReference implements ExecutionsEnvironment
169
248
var _ ExecutionsEnvironment = & containerReference {}
0 commit comments