mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-18 03:45:12 +00:00
This commit creates a new version of the alpha configuration functions framework. Goals include: - Make it easy to build multi-version APIs with the framework (not previously facilitated at all). - Simplify the framework's APIs where redundant configuration options exist (leaving the most powerful, replacing others with helpers to maintain usability they provided). - Make the Framework's APIs more consistent (e.g. between the various template types, usage of kio.Filter, field names) - Decouple responsibilities (e.g. command creation, resource list processing, generation of templating functions). - Make the framework even more powerfully pluggable (e.g. any kio.Filter can be a selector, and the selector the framework provides is itself a filter built from reusable abstractions). - Improve documentation. - Make container patches merge fields (notably list fields like `env`) correctly.
89 lines
2.1 KiB
Go
89 lines
2.1 KiB
Go
// Copyright 2019 The Kubernetes Authors.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package framework_test
|
|
|
|
import (
|
|
"bytes"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"sigs.k8s.io/kustomize/kyaml/fn/framework"
|
|
"sigs.k8s.io/kustomize/kyaml/kio"
|
|
"sigs.k8s.io/kustomize/kyaml/yaml"
|
|
)
|
|
|
|
func TestExecute_Result(t *testing.T) {
|
|
p := framework.ResourceListProcessorFunc(func(rl *framework.ResourceList) error {
|
|
err := &framework.Result{
|
|
Name: "Incompatible config",
|
|
Items: []framework.ResultItem{{
|
|
Message: "bad value for replicas",
|
|
Severity: framework.Error,
|
|
ResourceRef: yaml.ResourceMeta{
|
|
TypeMeta: yaml.TypeMeta{APIVersion: "v1", Kind: "Deployment"},
|
|
ObjectMeta: yaml.ObjectMeta{
|
|
NameMeta: yaml.NameMeta{Name: "tester", Namespace: "default"},
|
|
},
|
|
},
|
|
Field: framework.Field{
|
|
Path: ".spec.Replicas",
|
|
CurrentValue: "0",
|
|
SuggestedValue: "3",
|
|
},
|
|
File: framework.File{
|
|
Path: "/path/to/deployment.yaml",
|
|
Index: 0,
|
|
},
|
|
}},
|
|
}
|
|
rl.Result = err
|
|
return err
|
|
})
|
|
out := new(bytes.Buffer)
|
|
source := &kio.ByteReadWriter{Reader: bytes.NewBufferString(`
|
|
kind: ResourceList
|
|
apiVersion: config.kubernetes.io/v1alpha1
|
|
items:
|
|
- kind: Deployment
|
|
apiVersion: v1
|
|
metadata:
|
|
name: tester
|
|
namespace: default
|
|
spec:
|
|
replicas: 0
|
|
`), Writer: out}
|
|
err := framework.Execute(p, source)
|
|
assert.EqualError(t, err, "[error] v1/Deployment/default/tester .spec."+
|
|
"Replicas: bad value for replicas")
|
|
assert.Equal(t, 1, err.(*framework.Result).ExitCode())
|
|
assert.Equal(t, `apiVersion: config.kubernetes.io/v1alpha1
|
|
kind: ResourceList
|
|
items:
|
|
- kind: Deployment
|
|
apiVersion: v1
|
|
metadata:
|
|
name: tester
|
|
namespace: default
|
|
spec:
|
|
replicas: 0
|
|
results:
|
|
name: Incompatible config
|
|
items:
|
|
- message: bad value for replicas
|
|
severity: error
|
|
resourceRef:
|
|
apiVersion: v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: tester
|
|
namespace: default
|
|
field:
|
|
path: .spec.Replicas
|
|
currentValue: "0"
|
|
suggestedValue: "3"
|
|
file:
|
|
path: /path/to/deployment.yaml`, strings.TrimSpace(out.String()))
|
|
}
|