func/pipelines/tekton/validate_test.go

119 lines
3.3 KiB
Go

//go:build !integration
// +build !integration
package tekton
import (
"testing"
fn "knative.dev/kn-plugin-func"
"knative.dev/kn-plugin-func/builders"
)
func Test_validatePipeline(t *testing.T) {
testBuildpacks := []string{"quay.io/foo/my-buildpack"}
tests := []struct {
name string
function fn.Function
wantErr bool
}{
{
name: "Without runtime - without builder - without additional Buildpacks",
function: fn.Function{},
wantErr: true,
},
{
name: "Without runtime - pack builder - without additional Buildpacks",
function: fn.Function{Builder: builders.Pack},
wantErr: true,
},
{
name: "Without runtime - s2i builder",
function: fn.Function{Builder: builders.S2I},
wantErr: true,
},
{
name: "Without runtime - without builder - with additional Buildpacks",
function: fn.Function{Buildpacks: testBuildpacks},
wantErr: true,
},
{
name: "Without runtime - pack builder - with additional Buildpacks",
function: fn.Function{Builder: builders.Pack, Buildpacks: testBuildpacks},
wantErr: true,
},
{
name: "Without runtime - s2i builder",
function: fn.Function{Builder: builders.S2I, Buildpacks: testBuildpacks},
wantErr: true,
},
{
name: "Supported runtime - without builder - without additional Buildpacks",
function: fn.Function{Runtime: "node"},
wantErr: true,
},
{
name: "Supported runtime - pack builder - without additional Buildpacks",
function: fn.Function{Builder: builders.Pack, Runtime: "node"},
wantErr: false,
},
{
name: "Supported runtime - s2i builder",
function: fn.Function{Builder: builders.S2I, Runtime: "node"},
wantErr: false,
},
{
name: "Supported runtime - pack builder - with additional Buildpacks",
function: fn.Function{Builder: builders.Pack, Runtime: "node", Buildpacks: testBuildpacks},
wantErr: true,
},
{
name: "Unsupported runtime - Go - pack builder - without additional Buildpacks",
function: fn.Function{Builder: builders.Pack, Runtime: "go"},
wantErr: true,
},
{
name: "Unsupported runtime - Go - pack builder - with additional Buildpacks",
function: fn.Function{Runtime: "go", Buildpacks: testBuildpacks},
wantErr: true,
},
{
name: "Unsupported runtime - Go - s2i builder",
function: fn.Function{Builder: builders.S2I, Runtime: "go"},
wantErr: true,
},
{
name: "Supported runtime - Quarkus - pack builder - without additional Buildpacks",
function: fn.Function{Builder: builders.Pack, Runtime: "quarkus"},
wantErr: false,
},
{
name: "Supported runtime - Quarkus - s2i builder",
function: fn.Function{Builder: builders.S2I, Runtime: "quarkus"},
wantErr: false,
},
{
name: "Unsupported runtime - Rust - pack builder - without additional Buildpacks",
function: fn.Function{Builder: builders.Pack, Runtime: "rust"},
wantErr: true,
},
{
name: "Unsupported runtime - Rust - s2i builder",
function: fn.Function{Builder: builders.S2I, Runtime: "rust"},
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
err := validatePipeline(tt.function)
if (err != nil) != tt.wantErr {
t.Errorf("validatePipeline() error = %v, wantErr %v", err, tt.wantErr)
return
}
})
}
}