mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-12 01:14:22 +00:00
Move kio.ByteRW tests from framework_test to byteio_readwriter_test
This commit is contained in:
@@ -90,149 +90,3 @@ results:
|
|||||||
tags:
|
tags:
|
||||||
foo: bar`, strings.TrimSpace(out.String()))
|
foo: bar`, strings.TrimSpace(out.String()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestExecute_NoErrorResult(t *testing.T) {
|
|
||||||
singleDeployment := `kind: Deployment
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: tester
|
|
||||||
namespace: default
|
|
||||||
spec:
|
|
||||||
replicas: 0`
|
|
||||||
resourceListDeployment := `kind: ResourceList
|
|
||||||
apiVersion: config.kubernetes.io/v1
|
|
||||||
items:
|
|
||||||
- kind: Deployment
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: tester
|
|
||||||
namespace: default
|
|
||||||
spec:
|
|
||||||
replicas: 0`
|
|
||||||
outputResourceList := `apiVersion: config.kubernetes.io/v1
|
|
||||||
kind: ResourceList
|
|
||||||
items:
|
|
||||||
- kind: Deployment
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: tester
|
|
||||||
namespace: default
|
|
||||||
spec:
|
|
||||||
replicas: 0
|
|
||||||
results:
|
|
||||||
- message: bad value for replicas
|
|
||||||
severity: error
|
|
||||||
resourceRef:
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Deployment
|
|
||||||
name: tester
|
|
||||||
namespace: default
|
|
||||||
field:
|
|
||||||
path: .spec.Replicas
|
|
||||||
currentValue: "0"
|
|
||||||
proposedValue: "3"
|
|
||||||
file:
|
|
||||||
path: /path/to/deployment.yaml
|
|
||||||
- message: some error
|
|
||||||
severity: error`
|
|
||||||
outputOtherWrap := strings.NewReplacer(
|
|
||||||
"kind: ResourceList", "kind: SomethingElse",
|
|
||||||
"apiVersion: config.kubernetes.io/v1", "apiVersion: fakeVersion",
|
|
||||||
).Replace(outputResourceList)
|
|
||||||
|
|
||||||
testCases := []struct {
|
|
||||||
desc string
|
|
||||||
noWrap bool
|
|
||||||
wrapKind string
|
|
||||||
wrapAPIVersion string
|
|
||||||
input string
|
|
||||||
want string
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
desc: "resource list",
|
|
||||||
input: resourceListDeployment,
|
|
||||||
want: outputResourceList,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: "individual resources",
|
|
||||||
input: singleDeployment,
|
|
||||||
want: singleDeployment,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: "wrap resource list",
|
|
||||||
wrapKind: kio.ResourceListKind,
|
|
||||||
wrapAPIVersion: kio.ResourceListAPIVersion,
|
|
||||||
input: resourceListDeployment,
|
|
||||||
want: outputResourceList,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: "unwrap resource list",
|
|
||||||
noWrap: true,
|
|
||||||
input: resourceListDeployment,
|
|
||||||
want: singleDeployment,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: "wrap individual resources",
|
|
||||||
wrapKind: kio.ResourceListKind,
|
|
||||||
wrapAPIVersion: kio.ResourceListAPIVersion,
|
|
||||||
input: singleDeployment,
|
|
||||||
want: outputResourceList,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: "no wrap has precedence",
|
|
||||||
noWrap: true,
|
|
||||||
wrapKind: kio.ResourceListKind,
|
|
||||||
wrapAPIVersion: kio.ResourceListAPIVersion,
|
|
||||||
input: singleDeployment,
|
|
||||||
want: singleDeployment,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: "honor specified wrapping kind",
|
|
||||||
wrapKind: "SomethingElse",
|
|
||||||
wrapAPIVersion: "fakeVersion",
|
|
||||||
input: resourceListDeployment,
|
|
||||||
want: outputOtherWrap,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, tc := range testCases {
|
|
||||||
t.Run(tc.desc, func(t *testing.T) {
|
|
||||||
p := framework.ResourceListProcessorFunc(func(rl *framework.ResourceList) error {
|
|
||||||
rl.Results = framework.Results{
|
|
||||||
{
|
|
||||||
Message: "bad value for replicas",
|
|
||||||
Severity: framework.Error,
|
|
||||||
ResourceRef: yaml.ResourceIdentifier{
|
|
||||||
TypeMeta: yaml.TypeMeta{APIVersion: "v1", Kind: "Deployment"},
|
|
||||||
NameMeta: yaml.NameMeta{Name: "tester", Namespace: "default"},
|
|
||||||
},
|
|
||||||
Field: framework.Field{
|
|
||||||
Path: ".spec.Replicas",
|
|
||||||
CurrentValue: "0",
|
|
||||||
ProposedValue: "3",
|
|
||||||
},
|
|
||||||
File: framework.File{
|
|
||||||
Path: "/path/to/deployment.yaml",
|
|
||||||
Index: 0,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Message: "some error",
|
|
||||||
Severity: framework.Error,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
got := new(bytes.Buffer)
|
|
||||||
source := &kio.ByteReadWriter{
|
|
||||||
Reader: bytes.NewBufferString(tc.input),
|
|
||||||
Writer: got,
|
|
||||||
WrappingAPIVersion: tc.wrapAPIVersion,
|
|
||||||
WrappingKind: tc.wrapKind,
|
|
||||||
NoWrap: tc.noWrap,
|
|
||||||
}
|
|
||||||
assert.NoError(t, framework.Execute(p, source))
|
|
||||||
assert.Equal(t, tc.want, strings.TrimSpace(got.String()))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -747,3 +747,122 @@ func TestByteReadWriter_WrapBareSeqNode(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestByteReadWriter_ResourceListWrapping(t *testing.T) {
|
||||||
|
singleDeployment := `kind: Deployment
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: tester
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
replicas: 0`
|
||||||
|
resourceList := `apiVersion: config.kubernetes.io/v1
|
||||||
|
kind: ResourceList
|
||||||
|
items:
|
||||||
|
- kind: Deployment
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: tester
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
replicas: 0`
|
||||||
|
resourceListWithError := `apiVersion: config.kubernetes.io/v1
|
||||||
|
kind: ResourceList
|
||||||
|
items:
|
||||||
|
- kind: Deployment
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: tester
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
replicas: 0
|
||||||
|
results:
|
||||||
|
- message: some error
|
||||||
|
severity: error`
|
||||||
|
resourceListDifferentWrapper := strings.NewReplacer(
|
||||||
|
"kind: ResourceList", "kind: SomethingElse",
|
||||||
|
"apiVersion: config.kubernetes.io/v1", "apiVersion: fakeVersion",
|
||||||
|
).Replace(resourceList)
|
||||||
|
|
||||||
|
testCases := []struct {
|
||||||
|
desc string
|
||||||
|
noWrap bool
|
||||||
|
wrapKind string
|
||||||
|
wrapAPIVersion string
|
||||||
|
input string
|
||||||
|
want string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
desc: "resource list",
|
||||||
|
input: resourceList,
|
||||||
|
want: resourceList,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "individual resources",
|
||||||
|
input: singleDeployment,
|
||||||
|
want: singleDeployment,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "no nested wrapping",
|
||||||
|
wrapKind: kio.ResourceListKind,
|
||||||
|
wrapAPIVersion: kio.ResourceListAPIVersion,
|
||||||
|
input: resourceList,
|
||||||
|
want: resourceList,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "unwrap resource list",
|
||||||
|
noWrap: true,
|
||||||
|
input: resourceList,
|
||||||
|
want: singleDeployment,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "wrap individual resources",
|
||||||
|
wrapKind: kio.ResourceListKind,
|
||||||
|
wrapAPIVersion: kio.ResourceListAPIVersion,
|
||||||
|
input: singleDeployment,
|
||||||
|
want: resourceList,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "NoWrap has precedence",
|
||||||
|
noWrap: true,
|
||||||
|
wrapKind: kio.ResourceListKind,
|
||||||
|
wrapAPIVersion: kio.ResourceListAPIVersion,
|
||||||
|
input: singleDeployment,
|
||||||
|
want: singleDeployment,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "honor specified wrapping kind",
|
||||||
|
wrapKind: "SomethingElse",
|
||||||
|
wrapAPIVersion: "fakeVersion",
|
||||||
|
input: resourceList,
|
||||||
|
want: resourceListDifferentWrapper,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "passthrough results",
|
||||||
|
input: resourceListWithError,
|
||||||
|
want: resourceListWithError,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := range testCases {
|
||||||
|
tc := testCases[i]
|
||||||
|
t.Run(tc.desc, func(t *testing.T) {
|
||||||
|
var got bytes.Buffer
|
||||||
|
rw := kio.ByteReadWriter{
|
||||||
|
Reader: strings.NewReader(tc.input),
|
||||||
|
Writer: &got,
|
||||||
|
NoWrap: tc.noWrap,
|
||||||
|
WrappingAPIVersion: tc.wrapAPIVersion,
|
||||||
|
WrappingKind: tc.wrapKind,
|
||||||
|
}
|
||||||
|
|
||||||
|
rnodes, err := rw.Read()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
err = rw.Write(rnodes)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
assert.Equal(t, tc.want, strings.TrimSpace(got.String()))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user