@@ -186,3 +186,108 @@ func TestValidateParamIsUsed(t *testing.T) {
186186 assert .Error (t , err , "field `param` key \" rootFul\" is not used in any provision, probe, copyToHost, or portForward" )
187187 }
188188}
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