diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index da65bec..0b8f709 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,10 +9,18 @@ linter: script: - "golangci-lint run" +testing: + stage: "testing" + needs: + - "linter" + image: "cr.simoncor.net/siempie/go-build:latest" + script: + - "go test cmd/gogitlabber/*" + build: stage: "build" needs: - - "linter" + - "testing" image: "cr.simoncor.net/siempie/go-build:latest" script: - "GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o gogitlabber cmd/gogitlabber/*" diff --git a/cmd/gogitlabber/prerequisites_test.go b/cmd/gogitlabber/prerequisites_test.go new file mode 100644 index 0000000..3c8c479 --- /dev/null +++ b/cmd/gogitlabber/prerequisites_test.go @@ -0,0 +1,37 @@ +package main + +import ( + "errors" + "testing" +) + +// new type for the lookup function +type lookPathFunc func(file string) (string, error) + +// modified function to accept a lookup function +func verifyGitAvailableWithLookup(lookPath lookPathFunc) error { + _, err := lookPath("git") + if err != nil { + return errors.New("could not find git in path") + } + return nil +} + +func TestVerifyGitAvailable(t *testing.T) { + + // test case 1: git is available + err := verifyGitAvailableWithLookup(func(file string) (string, error) { + return "/usr/bin/git", nil + }) + if err != nil { + t.Errorf("Expected no error when git is available, got: %v", err) + } + + // test case 2: git is not available + err = verifyGitAvailableWithLookup(func(file string) (string, error) { + return "", errors.New("git not found") + }) + if err == nil { + t.Error("Expected error when git is not available, got nil") + } +}