func/test/e2e/func_test_proj.go

76 lines
2.0 KiB
Go

package e2e
import (
"fmt"
"os"
"path/filepath"
"testing"
)
// FunctionTestProject
// structure to represent a function testing project location
// stored on filesystem
type FunctionTestProject struct {
// Function Name. Example "func-node-http"
FunctionName string
// Project location on filesystem.
// Example /tmp/func-node-http | %USERPROFILE%\AddData\Local\Temp\func-node-http
ProjectPath string
// Function Runtime. Example "node"
Runtime string
// Function Template. Example "http"
Template string
// Git Location of a Remote Repository used to pull the template
RemoteRepository string
// Indicates which builder should be uses (i.e: pack|s2i)
Builder string
// Indicates function is already built
IsBuilt bool
// Indicates function is already deployed
IsDeployed bool
// Indicates new revision deployed (custom template)
IsNewRevision bool
// Function URL
FunctionURL string
}
// NewFunctionTestProject initiates a project with derived function name an project path
func NewFunctionTestProject(t *testing.T, runtime string, template string) FunctionTestProject {
project := FunctionTestProject{
Runtime: runtime,
Template: template,
}
project.FunctionName = "func-" + runtime + "-" + template
project.ProjectPath = filepath.Join(t.TempDir(), project.FunctionName)
return project
}
// ExistsProjectFolder determine the project folder exists or not
func (f FunctionTestProject) ExistsProjectFolder() bool {
fileInfo, _ := os.Stat(f.ProjectPath)
if fileInfo != nil && fileInfo.IsDir() {
return true
}
return false
}
// CreateProjectFolder creates and empty folder for the project location.
func (f FunctionTestProject) CreateProjectFolder() error {
if f.ProjectPath != "" {
return os.Mkdir(f.ProjectPath, 0755)
}
return nil
}
// RemoveProjectFolder removes existing project folder
func (f FunctionTestProject) RemoveProjectFolder() error {
if f.ProjectPath != "" {
err := os.RemoveAll(f.ProjectPath)
if err != nil && !os.IsNotExist(err) {
return fmt.Errorf("unable to remove project folder: %s", err.Error())
}
}
return nil
}