mirror of https://github.com/knative/func.git
300 lines
6.8 KiB
Go
300 lines
6.8 KiB
Go
package tekton
|
|
|
|
import (
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/manifestival/manifestival"
|
|
"github.com/manifestival/manifestival/fake"
|
|
|
|
"knative.dev/func/pkg/builders"
|
|
fn "knative.dev/func/pkg/functions"
|
|
. "knative.dev/func/pkg/testing"
|
|
)
|
|
|
|
const (
|
|
// TestRegistry for calculating destination image during tests.
|
|
// Will be optional once we support in-cluster container registries
|
|
// by default. See TestRegistryRequired for details.
|
|
TestRegistry = "example.com/alice"
|
|
)
|
|
|
|
func Test_createPipelineTemplatePAC(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
root string
|
|
builder string
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "correct - pack builder",
|
|
root: "testdata/testCreatePipelineTemplatePack",
|
|
builder: builders.Pack,
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "correct - s2i builder",
|
|
root: "testdata/testCreatePipelineTemplateS2I",
|
|
builder: builders.S2I,
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "incorrect - foo builder",
|
|
root: "testdata/testCreatePipelineTemplateFoo",
|
|
builder: "foo",
|
|
wantErr: true,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
root := tt.root
|
|
defer Using(t, root)()
|
|
|
|
f, err := fn.NewFunction(root)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
f.Build.Builder = tt.builder
|
|
f.Image = "docker.io/alice/" + f.Name
|
|
f.Registry = TestRegistry
|
|
|
|
err = createPipelineTemplatePAC(f, make(map[string]string))
|
|
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("createPipelineTemplate() error = %v, wantErr %v", err, tt.wantErr)
|
|
return
|
|
}
|
|
|
|
fp := filepath.Join(root, resourcesDirectory, pipelineFileNamePAC)
|
|
exists, err := FileExists(t, fp)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if !exists != tt.wantErr {
|
|
t.Errorf("a pipeline should be generated in %s", fp)
|
|
return
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_createPipelineRunTemplatePAC(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
root string
|
|
builder string
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "correct - pack builder",
|
|
root: "testdata/testCreatePipelineRunTemplatePack",
|
|
builder: builders.Pack,
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "correct - s2i builder",
|
|
root: "testdata/testCreatePipelineRunTemplateS2I",
|
|
builder: builders.S2I,
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "incorrect - foo builder",
|
|
root: "testdata/testCreatePipelineRunTemplateFoo",
|
|
builder: "foo",
|
|
wantErr: true,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
root := tt.root
|
|
defer Using(t, root)()
|
|
|
|
f, err := fn.NewFunction(root)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
f.Build.Builder = tt.builder
|
|
f.Image = "docker.io/alice/" + f.Name
|
|
f.Registry = TestRegistry
|
|
|
|
err = createPipelineRunTemplatePAC(f, make(map[string]string))
|
|
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("createPipelineRunTemplate() error = %v, wantErr %v", err, tt.wantErr)
|
|
return
|
|
}
|
|
|
|
fp := filepath.Join(root, resourcesDirectory, pipelineRunFilenamePAC)
|
|
exists, err := FileExists(t, fp)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if !exists != tt.wantErr {
|
|
t.Errorf("a pipeline run should be generated in %s", fp)
|
|
return
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
// testData are used by Test_createAndApplyPipelineTemplate() and Test_createAndApplyPipelineRunTemplate()
|
|
var testData = []struct {
|
|
name string
|
|
root string
|
|
builder string
|
|
runtime string
|
|
namespace string
|
|
labels map[string]string
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "correct - pack & node",
|
|
root: "testdata/testCreatePipelinePackNode",
|
|
runtime: "node",
|
|
builder: builders.Pack,
|
|
namespace: "test-ns",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "correct - pack & quarkus",
|
|
root: "testdata/testCreatePipelinePackQuarkus",
|
|
runtime: "quarkus",
|
|
builder: builders.Pack,
|
|
namespace: "test-ns",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "correct - pack & go",
|
|
root: "testdata/testCreatePipelinePackGo",
|
|
runtime: "go",
|
|
builder: builders.Pack,
|
|
namespace: "test-ns",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "correct - pack & python",
|
|
root: "testdata/testCreatePipelinePackPython",
|
|
runtime: "python",
|
|
builder: builders.Pack,
|
|
namespace: "test-ns",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "correct - pack & typescript",
|
|
root: "testdata/testCreatePipelinePackTypescript",
|
|
runtime: "typescript",
|
|
builder: builders.Pack,
|
|
namespace: "test-ns",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "correct - pack & springboot",
|
|
root: "testdata/testCreatePipelinePackSpringboot",
|
|
runtime: "springboot",
|
|
builder: builders.Pack,
|
|
namespace: "test-ns",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "correct - pack & rust",
|
|
root: "testdata/testCreatePipelinePackRust",
|
|
runtime: "rust",
|
|
builder: builders.Pack,
|
|
namespace: "test-ns",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "correct - s2i & node",
|
|
root: "testdata/testCreatePipelineS2INode",
|
|
runtime: "node",
|
|
builder: builders.S2I,
|
|
namespace: "test-ns",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "correct - s2i & quarkus",
|
|
root: "testdata/testCreatePipelineS2IQuarkus",
|
|
runtime: "quarkus",
|
|
builder: builders.S2I,
|
|
namespace: "test-ns",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "correct - s2i & go",
|
|
root: "testdata/testCreatePipelineS2IGo",
|
|
runtime: "go",
|
|
builder: builders.S2I,
|
|
namespace: "test-ns",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "correct - s2i & python",
|
|
root: "testdata/testCreatePipelineS2IPython",
|
|
runtime: "python",
|
|
builder: builders.S2I,
|
|
namespace: "test-ns",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "correct - s2i & typescript",
|
|
root: "testdata/testCreatePipelineS2ITypescript",
|
|
runtime: "typescript",
|
|
builder: builders.S2I,
|
|
namespace: "test-ns",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "correct - s2i & springboot",
|
|
root: "testdata/testCreatePipelineS2ISpringboot",
|
|
runtime: "springboot",
|
|
builder: builders.S2I,
|
|
namespace: "test-ns",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "correct - s2i & rust",
|
|
root: "testdata/testCreatePipelineS2IRust",
|
|
runtime: "rust",
|
|
builder: builders.S2I,
|
|
namespace: "test-ns",
|
|
wantErr: false,
|
|
},
|
|
}
|
|
|
|
func Test_createAndApplyPipelineRunTemplate(t *testing.T) {
|
|
for _, tt := range testData {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
// save current function and restore it at the end
|
|
old := manifestivalClient
|
|
defer func() { manifestivalClient = old }()
|
|
|
|
manifestivalClient = func() (manifestival.Client, error) {
|
|
return fake.New(), nil
|
|
}
|
|
|
|
root := tt.root + "Run"
|
|
defer Using(t, root)()
|
|
|
|
f, err := fn.NewFunction(root)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
f.Build.Builder = tt.builder
|
|
f.Runtime = tt.runtime
|
|
f.Image = "docker.io/alice/" + f.Name
|
|
f.Registry = TestRegistry
|
|
|
|
if err := createAndApplyPipelineRunTemplate(f, tt.namespace, tt.labels); (err != nil) != tt.wantErr {
|
|
t.Errorf("createAndApplyPipelineRunTemplate() error = %v, wantErr %v", err, tt.wantErr)
|
|
}
|
|
})
|
|
}
|
|
}
|