aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/cli/internal/ci/ci_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'cli/internal/ci/ci_test.go')
-rw-r--r--cli/internal/ci/ci_test.go105
1 files changed, 105 insertions, 0 deletions
diff --git a/cli/internal/ci/ci_test.go b/cli/internal/ci/ci_test.go
new file mode 100644
index 0000000..333ff61
--- /dev/null
+++ b/cli/internal/ci/ci_test.go
@@ -0,0 +1,105 @@
+package ci
+
+import (
+ "os"
+ "reflect"
+ "strings"
+ "testing"
+)
+
+func getVendor(name string) Vendor {
+ for _, v := range Vendors {
+ if v.Name == name {
+ return v
+ }
+ }
+ return Vendor{}
+}
+
+func TestInfo(t *testing.T) {
+ tests := []struct {
+ name string
+ setEnv []string
+ want Vendor
+ }{
+ {
+ name: "AppVeyor",
+ setEnv: []string{"APPVEYOR"},
+ want: getVendor("AppVeyor"),
+ },
+ {
+ name: "Vercel",
+ setEnv: []string{"VERCEL", "NOW_BUILDER"},
+ want: getVendor("Vercel"),
+ },
+ {
+ name: "Render",
+ setEnv: []string{"RENDER"},
+ want: getVendor("Render"),
+ },
+ {
+ name: "Netlify",
+ setEnv: []string{"NETLIFY"},
+ want: getVendor("Netlify CI"),
+ },
+ {
+ name: "Jenkins",
+ setEnv: []string{"BUILD_ID", "JENKINS_URL"},
+ want: getVendor("Jenkins"),
+ },
+ {
+ name: "Jenkins - failing",
+ setEnv: []string{"BUILD_ID"},
+ want: getVendor(""),
+ },
+ {
+ name: "GitHub Actions",
+ setEnv: []string{"GITHUB_ACTIONS"},
+ want: getVendor("GitHub Actions"),
+ },
+ {
+ name: "Codeship",
+ setEnv: []string{"CI_NAME=codeship"},
+ want: getVendor("Codeship"),
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ // unset existing envs
+ liveCi := ""
+ if Name() == "GitHub Actions" {
+ liveCi = os.Getenv("GITHUB_ACTIONS")
+ err := os.Unsetenv("GITHUB_ACTIONS")
+ if err != nil {
+ t.Errorf("Error un-setting GITHUB_ACTIONS env: %s", err)
+ }
+ }
+ // set envs
+ for _, env := range tt.setEnv {
+ envParts := strings.Split(env, "=")
+ val := "some value"
+ if len(envParts) > 1 {
+ val = envParts[1]
+ }
+ err := os.Setenv(envParts[0], val)
+ if err != nil {
+ t.Errorf("Error setting %s for %s test", envParts[0], tt.name)
+ }
+ defer os.Unsetenv(envParts[0]) //nolint errcheck
+
+ }
+ // run test
+ if got := Info(); !reflect.DeepEqual(got, tt.want) {
+ t.Errorf("Info() = %v, want %v", got, tt.want)
+ }
+
+ // reset env
+ if Name() == "GitHub Actions" {
+ err := os.Setenv("GITHUB_ACTIONS", liveCi)
+ if err != nil {
+ t.Errorf("Error re-setting GITHUB_ACTIONS env: %s", err)
+ }
+ }
+ })
+ }
+}