func/test/oncluster/scenario_context-dir_test.go

62 lines
1.7 KiB
Go

//go:build oncluster
package oncluster
import (
"os"
"path/filepath"
"strings"
"testing"
"gotest.tools/v3/assert"
"k8s.io/apimachinery/pkg/util/rand"
common "knative.dev/func/test/common"
)
// TestContextDirFunc tests the following use case:
// - As a Developer I want my function located in a specific directory on my project, hosted on my
// public git repository from the main branch, to get deployed on my cluster
func TestContextDirFunc(t *testing.T) {
var gitProjectName = "test-project" + rand.String(5)
var gitProjectPath = filepath.Join(t.TempDir(), gitProjectName)
var funcName = "test-func-context-dir"
var funcContextDir = filepath.Join("functions", funcName)
var funcPath = filepath.Join(gitProjectPath, funcContextDir)
func() {
gitServer := common.GetGitServer(t)
remoteRepo := gitServer.CreateRepository(gitProjectName)
defer gitServer.DeleteRepository(gitProjectName)
knFunc := common.NewKnFuncShellCli(t)
knFunc.Exec("create", "-l", "node", funcPath)
WriteNewSimpleIndexJS(t, funcPath, "hello dir")
defer os.RemoveAll(gitProjectPath)
// Initial commit to repository: git init + commit + push
GitInitialCommitAndPush(t, gitProjectPath, remoteRepo.ExternalCloneURL)
knFunc.Exec("deploy",
"-p", funcPath,
"-r", common.GetRegistry(),
"--remote",
"--verbose",
"--git-url", remoteRepo.ClusterCloneURL,
"--git-dir", funcContextDir,
)
defer knFunc.Exec("delete", "-p", funcPath)
// -- Assertions --
result := knFunc.Exec("invoke", "-p", funcPath)
assert.Assert(t, strings.Contains(result.Out, "hello dir"), "Func body does not contain 'hello dir'")
AssertThatTektonPipelineRunSucceed(t, funcName)
}()
AssertThatTektonPipelineResourcesNotExists(t, funcName)
}