Skip to content

Commit 2e48a82

Browse files
authored
Merge pull request #3638 from alexandear-org/fix/provision-validation-err-message
fix: correct validation error message when invalid provision
2 parents 782d3d8 + a296ca3 commit 2e48a82

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

pkg/limayaml/validate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ func Validate(y *LimaYAML, warn bool) error {
219219
case ProvisionModeSystem, ProvisionModeUser, ProvisionModeBoot, ProvisionModeData, ProvisionModeDependency, ProvisionModeAnsible:
220220
default:
221221
return fmt.Errorf("field `provision[%d].mode` must one of %q, %q, %q, %q, %q, or %q",
222-
i, ProvisionModeSystem, ProvisionModeUser, ProvisionModeBoot, ProvisionModeDependency, ProvisionModeAnsible, ProvisionModeAnsible)
222+
i, ProvisionModeSystem, ProvisionModeUser, ProvisionModeBoot, ProvisionModeData, ProvisionModeDependency, ProvisionModeAnsible)
223223
}
224224
if p.Mode != ProvisionModeDependency && p.SkipDefaultDependencyResolution != nil {
225225
return fmt.Errorf("field `provision[%d].mode` cannot set skipDefaultDependencyResolution, only valid on scripts of type %q",

pkg/limayaml/validate_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,37 @@ func TestValidateProbes(t *testing.T) {
4040
assert.Error(t, err, "field `probe[0].file.digest` support is not yet implemented")
4141
}
4242

43+
func TestValidateProvisionMode(t *testing.T) {
44+
images := `images: [{location: /}]`
45+
provisionBoot := `provision: [{mode: boot, script: "touch /tmp/param-$PARAM_BOOT"}]`
46+
y, err := Load([]byte(provisionBoot+"\n"+images), "lima.yaml")
47+
assert.NilError(t, err)
48+
49+
err = Validate(y, false)
50+
assert.NilError(t, err)
51+
52+
provisionUser := `provision: [{mode: user, script: "touch /tmp/param-$PARAM_USER"}]`
53+
y, err = Load([]byte(provisionUser+"\n"+images), "lima.yaml")
54+
assert.NilError(t, err)
55+
56+
err = Validate(y, false)
57+
assert.NilError(t, err)
58+
59+
provisionDependency := `provision: [{mode: ansible, script: "touch /tmp/param-$PARAM_DEPENDENCY"}]`
60+
y, err = Load([]byte(provisionDependency+"\n"+images), "lima.yaml")
61+
assert.NilError(t, err)
62+
63+
err = Validate(y, false)
64+
assert.NilError(t, err)
65+
66+
provisionInvalid := `provision: [{mode: invalid}]`
67+
y, err = Load([]byte(provisionInvalid+"\n"+images), "lima.yaml")
68+
assert.NilError(t, err)
69+
70+
err = Validate(y, false)
71+
assert.Error(t, err, "field `provision[0].mode` must one of \"system\", \"user\", \"boot\", \"data\", \"dependency\", or \"ansible\"")
72+
}
73+
4374
func TestValidateProvisionData(t *testing.T) {
4475
images := `images: [{location: /}]`
4576
validData := `provision: [{mode: data, path: /tmp, content: hello}]`

0 commit comments

Comments
 (0)