Skip to content

Commit 84fd6d8

Browse files
committed
tweak tests for ValidateAgainstLatestConfig()
Signed-off-by: Ansuman Sahoo <[email protected]>
1 parent f52f307 commit 84fd6d8

File tree

7 files changed

+45
-48
lines changed

7 files changed

+45
-48
lines changed

pkg/driver/driver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ type Driver interface {
8080
Info() Info
8181

8282
// SetConfig sets the configuration for the instance.
83-
Configure(inst *limatype.Instance, sshLocalPort int) *ConfiguredDriver
83+
Configure(inst *limatype.Instance) *ConfiguredDriver
8484

8585
AcceptConfig(cfg *limatype.LimaYAML, filepath string) error
8686
FillConfig(cfg *limatype.LimaYAML, filePath string) error

pkg/driver/external/client/methods.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ func (d *DriverClient) Info() driver.Info {
281281
return info
282282
}
283283

284-
func (d *DriverClient) Configure(inst *store.Instance) *driver.ConfiguredDriver {
284+
func (d *DriverClient) Configure(inst *limatype.Instance) *driver.ConfiguredDriver {
285285
d.logger.Debugf("Setting config for instance %s with SSH local port %d", inst.Name, inst.SSHLocalPort)
286286

287287
instJSON, err := inst.MarshalJSON()

pkg/driver/qemu/qemu_driver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func New() *LimaQemuDriver {
6767
}
6868
}
6969

70-
func (l *LimaQemuDriver) Configure(inst *store.Instance) *driver.ConfiguredDriver {
70+
func (l *LimaQemuDriver) Configure(inst *limatype.Instance) *driver.ConfiguredDriver {
7171
l.Instance = inst
7272
l.SSHLocalPort = inst.SSHLocalPort
7373

pkg/driver/vz/vz_driver_darwin.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,7 @@ func New() *LimaVzDriver {
9191
}
9292
}
9393

94-
<<<<<<< HEAD
95-
func (l *LimaVzDriver) Configure(inst *store.Instance) *driver.ConfiguredDriver {
96-
=======
97-
func (l *LimaVzDriver) Configure(inst *limatype.Instance, sshLocalPort int) *driver.ConfiguredDriver {
98-
>>>>>>> 4e814fb4 (resolve vmtype by using internal drivers)
94+
func (l *LimaVzDriver) Configure(inst *limatype.Instance) *driver.ConfiguredDriver {
9995
l.Instance = inst
10096
l.SSHLocalPort = inst.SSHLocalPort
10197

pkg/limayaml/validate.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -599,42 +599,43 @@ func warnExperimental(y *limatype.LimaYAML) {
599599
// This validates configuration rules that disallow certain changes, such as shrinking the disk.
600600
func ValidateAgainstLatestConfig(yNew, yLatest []byte) error {
601601
var n limatype.LimaYAML
602+
var errs error
602603

603604
// Load the latest YAML and fill in defaults
604605
l, err := LoadWithWarnings(yLatest, "")
605606
if err != nil {
606-
return err
607+
errs = errors.Join(errs, err)
607608
}
608609
if err := driverutil.ResolveVMType(l, ""); err != nil {
609-
return fmt.Errorf("failed to accept config for %q: %w", "", err)
610+
errs = errors.Join(errs, fmt.Errorf("failed to accept config for %q: %w", "", err))
610611
}
611612
if err := Unmarshal(yNew, &n, "Unmarshal new YAML bytes"); err != nil {
612-
return err
613+
errs = errors.Join(errs, err)
613614
}
614615

615-
if *n.VMType != *l.VMType {
616-
return fmt.Errorf("cannot change VMType from %v to %v, please create a new instance with the desired VMType", *l.VMType, *n.VMType)
616+
if (n.VMType != nil && l.VMType != nil) && *n.VMType != *l.VMType {
617+
errs = errors.Join(errs, fmt.Errorf("cannot change VMType from %v to %v, please create a new instance with the desired VMType", *l.VMType, *n.VMType))
617618
}
618619

619620
// Handle editing the template without a disk value
620621
if n.Disk == nil || l.Disk == nil {
621-
return nil
622+
return errs
622623
}
623624

624625
// Disk value must be provided, as it is required when creating an instance.
625626
nDisk, err := units.RAMInBytes(*n.Disk)
626627
if err != nil {
627-
return err
628+
errs = errors.Join(errs, err)
628629
}
629630
lDisk, err := units.RAMInBytes(*l.Disk)
630631
if err != nil {
631-
return err
632+
errs = errors.Join(errs, err)
632633
}
633634

634635
// Reject shrinking disk
635636
if nDisk < lDisk {
636-
return fmt.Errorf("field `disk`: shrinking the disk (%v --> %v) is not supported", *l.Disk, *n.Disk)
637+
errs = errors.Join(errs, fmt.Errorf("field `disk`: shrinking the disk (%v --> %v) is not supported", *l.Disk, *n.Disk))
637638
}
638639

639-
return nil
640+
return errs
640641
}

pkg/limayaml/validate_test.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
package limayaml
55

66
import (
7-
"errors"
87
"testing"
98

109
"gotest.tools/v3/assert"
@@ -312,7 +311,6 @@ func TestValidateMultipleErrors(t *testing.T) {
312311
yamlWithMultipleErrors := `
313312
os: windows
314313
arch: unsupported_arch
315-
vmType: invalid_type
316314
portForwards:
317315
- guestPort: 22
318316
hostPort: 2222
@@ -328,10 +326,10 @@ provision:
328326
y, err := Load([]byte(yamlWithMultipleErrors), "multiple-errors.yaml")
329327
assert.NilError(t, err)
330328
err = Validate(y, false)
329+
t.Logf("Validation errors: %v", err)
331330

332331
assert.Error(t, err, "field `os` must be \"Linux\"; got \"windows\"\n"+
333332
"field `arch` must be one of [x86_64 aarch64 armv7l ppc64le riscv64 s390x]; got \"unsupported_arch\"\n"+
334-
"field `vmType` must be \"qemu\", \"vz\", \"wsl2\"; got \"invalid_type\"\n"+
335333
"field `images` must be set\n"+
336334
"field `provision[0].mode` must one of \"system\", \"user\", \"boot\", \"data\", \"dependency\", or \"ansible\"\n"+
337335
"field `provision[1].path` must not be empty when mode is \"data\"")
@@ -342,49 +340,51 @@ func TestValidateAgainstLatestConfig(t *testing.T) {
342340
name string
343341
yNew string
344342
yLatest string
345-
wantErr error
343+
wantErr string
346344
}{
347345
{
348346
name: "Valid disk size unchanged",
349347
yNew: `disk: 100GiB`,
350348
yLatest: `disk: 100GiB`,
349+
wantErr: "failed to accept config for \"\": no VMType found for \"\"",
351350
},
352351
{
353352
name: "Valid disk size increased",
354353
yNew: `disk: 200GiB`,
355354
yLatest: `disk: 100GiB`,
355+
wantErr: "failed to accept config for \"\": no VMType found for \"\"",
356356
},
357357
{
358358
name: "No disk field in both YAMLs",
359359
yNew: ``,
360360
yLatest: ``,
361+
wantErr: "failed to accept config for \"\": no VMType found for \"\"",
361362
},
362363
{
363364
name: "No disk field in new YAMLs",
364365
yNew: ``,
365366
yLatest: `disk: 100GiB`,
367+
wantErr: "failed to accept config for \"\": no VMType found for \"\"",
366368
},
367369
{
368370
name: "No disk field in latest YAMLs",
369371
yNew: `disk: 100GiB`,
370372
yLatest: ``,
373+
wantErr: "failed to accept config for \"\": no VMType found for \"\"",
371374
},
372375
{
373376
name: "Disk size shrunk",
374377
yNew: `disk: 50GiB`,
375378
yLatest: `disk: 100GiB`,
376-
wantErr: errors.New("field `disk`: shrinking the disk (100GiB --> 50GiB) is not supported"),
379+
wantErr: "failed to accept config for \"\": no VMType found for \"\"\n" +
380+
"field `disk`: shrinking the disk (100GiB --> 50GiB) is not supported",
377381
},
378382
}
379383

380384
for _, tt := range tests {
381385
t.Run(tt.name, func(t *testing.T) {
382386
err := ValidateAgainstLatestConfig([]byte(tt.yNew), []byte(tt.yLatest))
383-
if tt.wantErr == nil {
384-
assert.NilError(t, err)
385-
} else {
386-
assert.Error(t, err, tt.wantErr.Error())
387-
}
387+
assert.Error(t, err, tt.wantErr)
388388
})
389389
}
390390
}

pkg/registry/registry_test.go

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -27,26 +27,26 @@ func newMockDriver(name string) *mockDriver {
2727

2828
var _ driver.Driver = (*mockDriver)(nil)
2929

30-
func (m *mockDriver) Validate() error { return nil }
31-
func (m *mockDriver) Initialize(_ context.Context) error { return nil }
32-
func (m *mockDriver) CreateDisk(_ context.Context) error { return nil }
33-
func (m *mockDriver) Start(_ context.Context) (chan error, error) { return nil, nil }
34-
func (m *mockDriver) Stop(_ context.Context) error { return nil }
35-
func (m *mockDriver) RunGUI() error { return nil }
36-
func (m *mockDriver) ChangeDisplayPassword(_ context.Context, _ string) error { return nil }
37-
func (m *mockDriver) DisplayConnection(_ context.Context) (string, error) { return "", nil }
38-
func (m *mockDriver) CreateSnapshot(_ context.Context, _ string) error { return nil }
39-
func (m *mockDriver) ApplySnapshot(_ context.Context, _ string) error { return nil }
40-
func (m *mockDriver) DeleteSnapshot(_ context.Context, _ string) error { return nil }
41-
func (m *mockDriver) ListSnapshots(_ context.Context) (string, error) { return "", nil }
42-
func (m *mockDriver) Register(_ context.Context) error { return nil }
43-
func (m *mockDriver) Unregister(_ context.Context) error { return nil }
44-
func (m *mockDriver) ForwardGuestAgent() bool { return false }
45-
func (m *mockDriver) GuestAgentConn(_ context.Context) (net.Conn, string, error) { return nil, "", nil }
46-
func (m *mockDriver) Info() driver.Info { return driver.Info{DriverName: m.Name} }
47-
func (m *mockDriver) Configure(_ *limatype.Instance, _ int) *driver.ConfiguredDriver { return nil }
48-
func (m *mockDriver) AcceptConfig(_ *limatype.LimaYAML, _ string) error { return nil }
49-
func (m *mockDriver) FillConfig(_ *limatype.LimaYAML, _ string) error { return nil }
30+
func (m *mockDriver) Validate() error { return nil }
31+
func (m *mockDriver) Initialize(_ context.Context) error { return nil }
32+
func (m *mockDriver) CreateDisk(_ context.Context) error { return nil }
33+
func (m *mockDriver) Start(_ context.Context) (chan error, error) { return nil, nil }
34+
func (m *mockDriver) Stop(_ context.Context) error { return nil }
35+
func (m *mockDriver) RunGUI() error { return nil }
36+
func (m *mockDriver) ChangeDisplayPassword(_ context.Context, _ string) error { return nil }
37+
func (m *mockDriver) DisplayConnection(_ context.Context) (string, error) { return "", nil }
38+
func (m *mockDriver) CreateSnapshot(_ context.Context, _ string) error { return nil }
39+
func (m *mockDriver) ApplySnapshot(_ context.Context, _ string) error { return nil }
40+
func (m *mockDriver) DeleteSnapshot(_ context.Context, _ string) error { return nil }
41+
func (m *mockDriver) ListSnapshots(_ context.Context) (string, error) { return "", nil }
42+
func (m *mockDriver) Register(_ context.Context) error { return nil }
43+
func (m *mockDriver) Unregister(_ context.Context) error { return nil }
44+
func (m *mockDriver) ForwardGuestAgent() bool { return false }
45+
func (m *mockDriver) GuestAgentConn(_ context.Context) (net.Conn, string, error) { return nil, "", nil }
46+
func (m *mockDriver) Info() driver.Info { return driver.Info{DriverName: m.Name} }
47+
func (m *mockDriver) Configure(_ *limatype.Instance) *driver.ConfiguredDriver { return nil }
48+
func (m *mockDriver) AcceptConfig(_ *limatype.LimaYAML, _ string) error { return nil }
49+
func (m *mockDriver) FillConfig(_ *limatype.LimaYAML, _ string) error { return nil }
5050

5151
func TestRegister(t *testing.T) {
5252
BackupRegistry(t)

0 commit comments

Comments
 (0)