Skip to content

Commit

Permalink
Move kio.ByteRW tests from framework_test to byteio_readwriter_test
Browse files Browse the repository at this point in the history
  • Loading branch information
Carlos Ortiz García committed Nov 8, 2021
1 parent ba4d83f commit 20c6089
Show file tree
Hide file tree
Showing 2 changed files with 119 additions and 146 deletions.
146 changes: 0 additions & 146 deletions kyaml/fn/framework/framework_test.go
Expand Up @@ -90,149 +90,3 @@ results:
tags:
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()))
})
}
}
119 changes: 119 additions & 0 deletions kyaml/kio/byteio_readwriter_test.go
Expand Up @@ -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()))
})
}
}

0 comments on commit 20c6089

Please sign in to comment.