mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-07-16 17:33:14 +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 {
|
if v, ok := api.(Validator); ok {
|
||||||
return combineErrors(schemaValidationError, v.Validate())
|
return combineErrors(schemaValidationError, v.Validate())
|
||||||
}
|
}
|
||||||
return nil
|
return schemaValidationError
|
||||||
}
|
}
|
||||||
|
|
||||||
func combineErrors(schemaErr, customErr error) error {
|
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/frameworktestutil"
|
||||||
"sigs.k8s.io/kustomize/kyaml/fn/framework/parser"
|
"sigs.k8s.io/kustomize/kyaml/fn/framework/parser"
|
||||||
"sigs.k8s.io/kustomize/kyaml/openapi"
|
"sigs.k8s.io/kustomize/kyaml/openapi"
|
||||||
|
"sigs.k8s.io/kustomize/kyaml/resid"
|
||||||
"sigs.k8s.io/kustomize/kyaml/yaml"
|
"sigs.k8s.io/kustomize/kyaml/yaml"
|
||||||
|
|
||||||
"sigs.k8s.io/kustomize/kyaml/fn/framework"
|
"sigs.k8s.io/kustomize/kyaml/fn/framework"
|
||||||
@@ -700,6 +701,16 @@ func (e errorMergeTest) Validate() error {
|
|||||||
return nil
|
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) {
|
func TestLoadFunctionConfig(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
@@ -755,6 +766,19 @@ spec:
|
|||||||
api: &errorMergeTest{},
|
api: &errorMergeTest{},
|
||||||
wantErrMsgs: []string{
|
wantErrMsgs: []string{
|
||||||
`validation failure list:
|
`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`,
|
spec.replicas in body should be less than or equal to 9`,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -813,6 +837,7 @@ test: true
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, tt.want, tt.api)
|
require.Equal(t, tt.want, tt.api)
|
||||||
} else {
|
} else {
|
||||||
|
require.Error(t, err)
|
||||||
for _, msg := range tt.wantErrMsgs {
|
for _, msg := range tt.wantErrMsgs {
|
||||||
require.Contains(t, err.Error(), msg)
|
require.Contains(t, err.Error(), msg)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user