@@ -186,3 +186,108 @@ func TestValidateParamIsUsed(t *testing.T) {
186
186
assert .Error (t , err , "field `param` key \" rootFul\" is not used in any provision, probe, copyToHost, or portForward" )
187
187
}
188
188
}
189
+
190
+ func TestValidateRosetta (t * testing.T ) {
191
+ images := `images: [{"location": "/"}]`
192
+
193
+ invalidRosetta := `
194
+ rosetta:
195
+ enabled: true
196
+ vmType: "qemu"
197
+ `
198
+ y , err := Load ([]byte (invalidRosetta + "\n " + images ), "lima.yaml" )
199
+ assert .NilError (t , err )
200
+
201
+ err = Validate (y , false )
202
+ assert .Error (t , err , "field `rosetta.enabled` can only be enabled for VMType \" vz\" ; got \" qemu\" " )
203
+
204
+ validRosetta := `
205
+ rosetta:
206
+ enabled: true
207
+ vmType: "vz"
208
+ `
209
+ y , err = Load ([]byte (validRosetta + "\n " + images ), "lima.yaml" )
210
+ assert .NilError (t , err )
211
+
212
+ err = Validate (y , false )
213
+ assert .NilError (t , err )
214
+
215
+ rosettaDisabled := `
216
+ rosetta:
217
+ enabled: false
218
+ vmType: "qemu"
219
+ `
220
+ y , err = Load ([]byte (rosettaDisabled + "\n " + images ), "lima.yaml" )
221
+ assert .NilError (t , err )
222
+
223
+ err = Validate (y , false )
224
+ assert .NilError (t , err )
225
+ }
226
+
227
+ func TestValidateNestedVirtualization (t * testing.T ) {
228
+ images := `images: [{"location": "/"}]`
229
+
230
+ validYAML := `
231
+ nestedVirtualization: true
232
+ vmType: vz
233
+ ` + images
234
+
235
+ y , err := Load ([]byte (validYAML ), "lima.yaml" )
236
+ assert .NilError (t , err )
237
+
238
+ err = Validate (y , false )
239
+ assert .NilError (t , err )
240
+
241
+ invalidYAML := `
242
+ nestedVirtualization: true
243
+ vmType: qemu
244
+ ` + images
245
+
246
+ y , err = Load ([]byte (invalidYAML ), "lima.yaml" )
247
+ assert .NilError (t , err )
248
+
249
+ err = Validate (y , false )
250
+ assert .Error (t , err , "field `nestedVirtualization` can only be enabled for VMType \" vz\" ; got \" qemu\" " )
251
+ }
252
+
253
+ func TestValidateMountTypeOS (t * testing.T ) {
254
+ images := `images: [{"location": "/"}]`
255
+
256
+ inValidMountTypeLinux := `
257
+ mountType: "rMountType"
258
+ `
259
+ y , err := Load ([]byte (inValidMountTypeLinux + "\n " + images ), "lima.yaml" )
260
+ assert .NilError (t , err )
261
+
262
+ err = Validate (y , true )
263
+ assert .Error (t , err , "field `mountType` must be \" reverse-sshfs\" or \" 9p\" or \" virtiofs\" , or \" wsl2\" , got \" rMountType\" " )
264
+
265
+ validMountTypeLinux := `
266
+ mountType: "virtiofs"
267
+ `
268
+ y , err = Load ([]byte (validMountTypeLinux + "\n " + images ), "lima.yaml" )
269
+ assert .NilError (t , err )
270
+
271
+ err = Validate (y , true )
272
+ assert .Error (t , err , "field `mountType` requires vmType 'vz' on macOS (darwin); got qemu" )
273
+
274
+ validMountTypeMac := `
275
+ mountType: "virtiofs"
276
+ vmType: "vz"
277
+ `
278
+ y , err = Load ([]byte (validMountTypeMac + "\n " + images ), "lima.yaml" )
279
+ assert .NilError (t , err )
280
+
281
+ err = Validate (y , false )
282
+ assert .NilError (t , err )
283
+
284
+ invalidMountTypeMac := `
285
+ mountType: "virtiofs"
286
+ vmType: "qemu"
287
+ `
288
+ y , err = Load ([]byte (invalidMountTypeMac + "\n " + images ), "lima.yaml" )
289
+ assert .NilError (t , err )
290
+
291
+ err = Validate (y , false )
292
+ assert .Error (t , err , "field `mountType` requires vmType 'vz' on macOS (darwin); got qemu" )
293
+ }
0 commit comments