mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-17 18:25:26 +00:00
Regression test and fix for APIs that satisfy ValidationSchemaProvider but not Validator
This commit is contained in:
@@ -173,7 +173,7 @@ func LoadFunctionConfig(src *yaml.RNode, api interface{}) error {
|
||||
if v, ok := api.(Validator); ok {
|
||||
return combineErrors(schemaValidationError, v.Validate())
|
||||
}
|
||||
return nil
|
||||
return schemaValidationError
|
||||
}
|
||||
|
||||
func combineErrors(schemaErr, customErr error) error {
|
||||
|
||||
@@ -17,6 +17,7 @@ import (
|
||||
"sigs.k8s.io/kustomize/kyaml/fn/framework/frameworktestutil"
|
||||
"sigs.k8s.io/kustomize/kyaml/fn/framework/parser"
|
||||
"sigs.k8s.io/kustomize/kyaml/openapi"
|
||||
"sigs.k8s.io/kustomize/kyaml/resid"
|
||||
"sigs.k8s.io/kustomize/kyaml/yaml"
|
||||
|
||||
"sigs.k8s.io/kustomize/kyaml/fn/framework"
|
||||
@@ -700,6 +701,16 @@ func (e errorMergeTest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a schemaProviderOnlyTest) Schema() (*spec.Schema, error) {
|
||||
schema, err := framework.SchemaFromFunctionDefinition(resid.NewGvk("example.com", "v1alpha1", "JavaSpringBoot"), javaSpringBootDefinition)
|
||||
return schema, errors.WrapPrefixf(err, "parsing JavaSpringBoot schema")
|
||||
}
|
||||
|
||||
type schemaProviderOnlyTest struct {
|
||||
Metadata Metadata `yaml:"metadata" json:"metadata"`
|
||||
Spec v1alpha1JavaSpringBootSpec `yaml:"spec" json:"spec"`
|
||||
}
|
||||
|
||||
func TestLoadFunctionConfig(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
@@ -755,6 +766,19 @@ spec:
|
||||
api: &errorMergeTest{},
|
||||
wantErrMsgs: []string{
|
||||
`validation failure list:
|
||||
spec.replicas in body should be less than or equal to 9`,
|
||||
},
|
||||
}, {
|
||||
name: "schema provider only",
|
||||
src: yaml.MustParse(`
|
||||
apiVersion: example.com/v1alpha1
|
||||
kind: JavaSpringBoot
|
||||
spec:
|
||||
replicas: 11
|
||||
`),
|
||||
api: &schemaProviderOnlyTest{},
|
||||
wantErrMsgs: []string{
|
||||
`validation failure list:
|
||||
spec.replicas in body should be less than or equal to 9`,
|
||||
},
|
||||
},
|
||||
@@ -813,6 +837,7 @@ test: true
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, tt.want, tt.api)
|
||||
} else {
|
||||
require.Error(t, err)
|
||||
for _, msg := range tt.wantErrMsgs {
|
||||
require.Contains(t, err.Error(), msg)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user