refactor function filters

This commit is contained in:
Phillip Wittrock
2020-03-24 11:18:46 -07:00
parent 064f0641ba
commit efdd812cc1
4 changed files with 206 additions and 202 deletions

View File

@@ -47,10 +47,15 @@ func TestRunFns_init(t *testing.T) {
api, err := yaml.Parse(`apiVersion: apps/v1
kind:
`)
spec := filters.FunctionSpec{
Container: filters.ContainerSpec{
Image: "example.com:version",
},
}
if !assert.NoError(t, err) {
return
}
filter := instance.containerFilterProvider("example.com:version", "", "", api)
filter := instance.functionFilterProvider(spec, api)
assert.Equal(t, &filters.ContainerFilter{Image: "example.com:version", Config: api}, filter)
}
@@ -69,7 +74,16 @@ kind:
if !assert.NoError(t, err) {
return
}
filter := instance.containerFilterProvider("example.com:version", "", "", api)
spec := filters.FunctionSpec{
Container: filters.ContainerSpec{
Image: "example.com:version",
},
}
if !assert.NoError(t, err) {
return
}
filter := instance.functionFilterProvider(spec, api)
assert.Equal(t, &filters.ContainerFilter{
Image: "example.com:version", Config: api, GlobalScope: true}, filter)
}
@@ -131,7 +145,7 @@ func TestRunFns_Execute__initDefault(t *testing.T) {
tt := tests[i]
t.Run(tt.name, func(t *testing.T) {
(&tt.instance).init()
(&tt.instance).containerFilterProvider = nil
(&tt.instance).functionFilterProvider = nil
if !assert.Equal(t, tt.expected, tt.instance) {
t.FailNow()
}
@@ -505,7 +519,7 @@ func TestCmd_Execute(t *testing.T) {
return
}
instance := RunFns{Path: dir, containerFilterProvider: getFilterProvider(t)}
instance := RunFns{Path: dir, functionFilterProvider: getFilterProvider(t)}
if !assert.NoError(t, instance.Execute()) {
t.FailNow()
}
@@ -534,9 +548,9 @@ func TestCmd_Execute_setFunctionPaths(t *testing.T) {
// run the functions, providing the path to the directory of filters
instance := RunFns{
FunctionPaths: []string{tmpF.Name()},
Path: dir,
containerFilterProvider: getFilterProvider(t),
FunctionPaths: []string{tmpF.Name()},
Path: dir,
functionFilterProvider: getFilterProvider(t),
}
// initialize the defaults
instance.init()
@@ -566,9 +580,9 @@ func TestCmd_Execute_setOutput(t *testing.T) {
out := &bytes.Buffer{}
instance := RunFns{
Output: out, // write to out
Path: dir,
containerFilterProvider: getFilterProvider(t),
Output: out, // write to out
Path: dir,
functionFilterProvider: getFilterProvider(t),
}
// initialize the defaults
instance.init()
@@ -614,9 +628,9 @@ func TestCmd_Execute_setInput(t *testing.T) {
}
instance := RunFns{
Input: input, // read from input
Path: outDir,
containerFilterProvider: getFilterProvider(t),
Input: input, // read from input
Path: outDir,
functionFilterProvider: getFilterProvider(t),
}
// initialize the defaults
instance.init()
@@ -659,8 +673,8 @@ func setupTest(t *testing.T) string {
// getFilterProvider fakes the creation of a filter, replacing the ContainerFiler with
// a filter to s/kind: Deployment/kind: StatefulSet/g.
// this can be used to simulate running a filter.
func getFilterProvider(t *testing.T) func(string, string, string, *yaml.RNode) kio.Filter {
return func(s, _, _ string, node *yaml.RNode) kio.Filter {
func getFilterProvider(t *testing.T) func(filters.FunctionSpec, *yaml.RNode) kio.Filter {
return func(f filters.FunctionSpec, node *yaml.RNode) kio.Filter {
// parse the filter from the input
filter := yaml.YFilter{}
b := &bytes.Buffer{}