5
5
6
6
"get.porter.sh/porter/pkg/cnab"
7
7
"github.com/cnabio/cnab-go/driver/docker"
8
+ "github.com/docker/docker/api/types/mount"
8
9
"github.com/stretchr/testify/assert"
9
10
"github.com/stretchr/testify/require"
10
11
)
@@ -131,34 +132,36 @@ func TestNewDriver_Docker(t *testing.T) {
131
132
r .MockGetDockerGroupId ()
132
133
defer r .Close ()
133
134
134
- r .Extensions [cnab .DockerExtensionKey ] = cnab.Docker {}
135
- _ , err := r .FileSystem .Create ("/var/run/docker.sock" )
136
- require .NoError (t , err )
137
- _ , err = r .FileSystem .Create ("/sourceFolder" )
138
- require .NoError (t , err )
139
- _ , err = r .FileSystem .Create ("/sourceFolder2" )
140
- require .NoError (t , err )
141
- _ , err = r .FileSystem .Create ("/sourceFolder3" )
142
- require .NoError (t , err )
135
+ var hostVolumeMounts = []HostVolumeMountSpec {
136
+ {
137
+ Source : "/sourceFolder" ,
138
+ Target : "/targetFolder" ,
139
+ ReadOnly : false ,
140
+ Type : mount .TypeBind ,
141
+ },
142
+ {
143
+ Source : "/sourceFolder2" ,
144
+ Target : "/targetFolder2" ,
145
+ ReadOnly : true ,
146
+ Type : mount .TypeBind ,
147
+ },
148
+ {
149
+ Source : "/sourceFolder3" ,
150
+ Target : "/targetFolder3" ,
151
+ ReadOnly : false ,
152
+ Type : mount .TypeBind ,
153
+ },
154
+ {
155
+ Source : "volume" ,
156
+ Target : "/targetFolder4" ,
157
+ ReadOnly : true ,
158
+ Type : mount .TypeVolume ,
159
+ },
160
+ }
143
161
144
162
args := ActionArguments {
145
163
AllowDockerHostAccess : true ,
146
- HostVolumeMounts : []HostVolumeMountSpec {
147
- {
148
- Source : "/sourceFolder" ,
149
- Target : "/targetFolder" ,
150
- },
151
- {
152
- Source : "/sourceFolder2" ,
153
- Target : "/targetFolder2" ,
154
- ReadOnly : true ,
155
- },
156
- {
157
- Source : "/sourceFolder3" ,
158
- Target : "/targetFolder3" ,
159
- ReadOnly : false ,
160
- },
161
- },
164
+ HostVolumeMounts : hostVolumeMounts ,
162
165
}
163
166
164
167
driver , err := r .newDriver (DriverNameDocker , args )
@@ -175,16 +178,14 @@ func TestNewDriver_Docker(t *testing.T) {
175
178
require .NoError (t , err )
176
179
require .Equal (t , false , containerHostCfg .Privileged )
177
180
178
- require .Len (t , containerHostCfg .Mounts , 4 ) //includes the docker socket mount
179
- assert .Equal (t , "/sourceFolder" , containerHostCfg .Mounts [1 ].Source )
180
- assert .Equal (t , "/targetFolder" , containerHostCfg .Mounts [1 ].Target )
181
- assert .Equal (t , false , containerHostCfg .Mounts [1 ].ReadOnly )
182
- assert .Equal (t , "/sourceFolder2" , containerHostCfg .Mounts [2 ].Source )
183
- assert .Equal (t , "/targetFolder2" , containerHostCfg .Mounts [2 ].Target )
184
- assert .Equal (t , true , containerHostCfg .Mounts [2 ].ReadOnly )
185
- assert .Equal (t , "/sourceFolder3" , containerHostCfg .Mounts [3 ].Source )
186
- assert .Equal (t , "/targetFolder3" , containerHostCfg .Mounts [3 ].Target )
187
- assert .Equal (t , false , containerHostCfg .Mounts [3 ].ReadOnly )
181
+ require .Len (t , containerHostCfg .Mounts , 5 ) //includes the docker socket mount
182
+
183
+ for i , hostMount := range hostVolumeMounts {
184
+ assert .Equal (t , hostMount .Source , containerHostCfg .Mounts [i + 1 ].Source )
185
+ assert .Equal (t , hostMount .Target , containerHostCfg .Mounts [i + 1 ].Target )
186
+ assert .Equal (t , hostMount .ReadOnly , containerHostCfg .Mounts [i + 1 ].ReadOnly )
187
+ assert .Equal (t , hostMount .Type , containerHostCfg .Mounts [i + 1 ].Type )
188
+ }
188
189
})
189
190
190
191
t .Run ("host volume mount, docker driver, with multiple mounts" , func (t * testing.T ) {
@@ -193,30 +194,25 @@ func TestNewDriver_Docker(t *testing.T) {
193
194
r := NewTestRuntime (t )
194
195
defer r .Close ()
195
196
196
- _ , err := r .FileSystem .Create ("/sourceFolder" )
197
- require .NoError (t , err )
198
- _ , err = r .FileSystem .Create ("/sourceFolder2" )
199
- require .NoError (t , err )
200
- _ , err = r .FileSystem .Create ("/sourceFolder3" )
201
- require .NoError (t , err )
197
+ var hostVolumeMounts = []HostVolumeMountSpec {
198
+ {
199
+ Source : "/sourceFolder" ,
200
+ Target : "/targetFolder" ,
201
+ },
202
+ {
203
+ Source : "/sourceFolder2" ,
204
+ Target : "/targetFolder2" ,
205
+ ReadOnly : true ,
206
+ },
207
+ {
208
+ Source : "/sourceFolder3" ,
209
+ Target : "/targetFolder3" ,
210
+ ReadOnly : false ,
211
+ },
212
+ }
202
213
203
214
args := ActionArguments {
204
- HostVolumeMounts : []HostVolumeMountSpec {
205
- {
206
- Source : "/sourceFolder" ,
207
- Target : "/targetFolder" ,
208
- },
209
- {
210
- Source : "/sourceFolder2" ,
211
- Target : "/targetFolder2" ,
212
- ReadOnly : true ,
213
- },
214
- {
215
- Source : "/sourceFolder3" ,
216
- Target : "/targetFolder3" ,
217
- ReadOnly : false ,
218
- },
219
- },
215
+ HostVolumeMounts : hostVolumeMounts ,
220
216
}
221
217
222
218
driver , err := r .newDriver (DriverNameDocker , args )
@@ -234,16 +230,13 @@ func TestNewDriver_Docker(t *testing.T) {
234
230
require .NoError (t , err )
235
231
236
232
require .Len (t , containerHostCfg .Mounts , 3 )
237
- assert .Equal (t , "/sourceFolder" , containerHostCfg .Mounts [0 ].Source )
238
- assert .Equal (t , "/targetFolder" , containerHostCfg .Mounts [0 ].Target )
239
- assert .Equal (t , false , containerHostCfg .Mounts [0 ].ReadOnly )
240
- assert .Equal (t , "/sourceFolder2" , containerHostCfg .Mounts [1 ].Source )
241
- assert .Equal (t , "/targetFolder2" , containerHostCfg .Mounts [1 ].Target )
242
- assert .Equal (t , true , containerHostCfg .Mounts [1 ].ReadOnly )
243
- assert .Equal (t , "/sourceFolder3" , containerHostCfg .Mounts [2 ].Source )
244
- assert .Equal (t , "/targetFolder3" , containerHostCfg .Mounts [2 ].Target )
245
- assert .Equal (t , false , containerHostCfg .Mounts [2 ].ReadOnly )
246
233
234
+ for i , hostMount := range hostVolumeMounts {
235
+ assert .Equal (t , hostMount .Source , containerHostCfg .Mounts [i ].Source )
236
+ assert .Equal (t , hostMount .Target , containerHostCfg .Mounts [i ].Target )
237
+ assert .Equal (t , hostMount .ReadOnly , containerHostCfg .Mounts [i ].ReadOnly )
238
+ assert .Equal (t , hostMount .Type , containerHostCfg .Mounts [i ].Type )
239
+ }
247
240
})
248
241
249
242
t .Run ("host volume mount, docker driver, with single mount" , func (t * testing.T ) {
@@ -252,14 +245,15 @@ func TestNewDriver_Docker(t *testing.T) {
252
245
r := NewTestRuntime (t )
253
246
defer r .Close ()
254
247
255
- _ , err := r .FileSystem .Create ("/sourceFolder" )
256
- require .NoError (t , err )
248
+ // _, err := r.FileSystem.Create("/sourceFolder")
249
+ // require.NoError(t, err)
257
250
258
251
args := ActionArguments {
259
252
HostVolumeMounts : []HostVolumeMountSpec {
260
253
{
261
254
Source : "/sourceFolder" ,
262
255
Target : "/targetFolder" ,
256
+ Type : mount .TypeBind ,
263
257
},
264
258
},
265
259
}
@@ -282,6 +276,7 @@ func TestNewDriver_Docker(t *testing.T) {
282
276
assert .Equal (t , "/sourceFolder" , containerHostCfg .Mounts [0 ].Source )
283
277
assert .Equal (t , "/targetFolder" , containerHostCfg .Mounts [0 ].Target )
284
278
assert .Equal (t , false , containerHostCfg .Mounts [0 ].ReadOnly )
279
+ assert .Equal (t , mount .TypeBind , containerHostCfg .Mounts [0 ].Type )
285
280
})
286
281
287
282
t .Run ("host volume mount, mismatch driver name" , func (t * testing.T ) {
0 commit comments