1 package main
2
3 import (
4 "os"
5 "testing"
6 )
7
8 func TestLoadBranchFromEnv(t *testing.T) {
9 var tests = []struct {
10 testCase string
11 envs map[string]string
12 expectedBranch string
13 }{
14 {
15 "all vars defined",
16 map[string]string{
17 "GIT_BRANCH": "master",
18 "CIRCLE_BRANCH": "circle-master",
19 "TRAVIS_BRANCH": "travis-master",
20 "CI_BRANCH": "ci-master",
21 "APPVEYOR_REPO_BRANCH": "appveyor-master",
22 "WERCKER_GIT_BRANCH": "wercker-master",
23 "DRONE_BRANCH": "drone-master",
24 "BUILDKITE_BRANCH": "buildkite-master",
25 "BRANCH_NAME": "jenkins-master",
26 },
27 "master",
28 },
29 {
30 "all except GIT_BRANCH",
31 map[string]string{
32 "CIRCLE_BRANCH": "circle-master",
33 "TRAVIS_BRANCH": "travis-master",
34 "CI_BRANCH": "ci-master",
35 "APPVEYOR_REPO_BRANCH": "appveyor-master",
36 "WERCKER_GIT_BRANCH": "wercker-master",
37 "DRONE_BRANCH": "drone-master",
38 "BUILDKITE_BRANCH": "buildkite-master",
39 "BRANCH_NAME": "jenkins-master",
40 },
41 "circle-master",
42 },
43 {
44 "all except GIT_BRANCH and CIRCLE_BRANCH",
45 map[string]string{
46 "TRAVIS_BRANCH": "travis-master",
47 "CI_BRANCH": "ci-master",
48 "APPVEYOR_REPO_BRANCH": "appveyor-master",
49 "WERCKER_GIT_BRANCH": "wercker-master",
50 "DRONE_BRANCH": "drone-master",
51 "BUILDKITE_BRANCH": "buildkite-master",
52 "BRANCH_NAME": "jenkins-master",
53 },
54 "travis-master",
55 },
56 {
57 "only CI_BRANCH defined",
58 map[string]string{
59 "CI_BRANCH": "ci-master",
60 },
61 "ci-master",
62 },
63 {
64 "only APPVEYOR_REPO_BRANCH defined",
65 map[string]string{
66 "APPVEYOR_REPO_BRANCH": "appveyor-master",
67 },
68 "appveyor-master",
69 },
70 {
71 "only WERCKER_GIT_BRANCH defined",
72 map[string]string{
73 "WERCKER_GIT_BRANCH": "wercker-master",
74 },
75 "wercker-master",
76 },
77 {
78 "only BRANCH_NAME defined",
79 map[string]string{
80 "BRANCH_NAME": "jenkins-master",
81 },
82 "jenkins-master",
83 },
84 {
85 "only BUILDKITE_BRANCH defined",
86 map[string]string{
87 "BUILDKITE_BRANCH": "buildkite-master",
88 },
89 "buildkite-master",
90 },
91 {
92 "only DRONE_BRANCH defined",
93 map[string]string{
94 "DRONE_BRANCH": "drone-master",
95 },
96 "drone-master",
97 },
98 {
99 "GitHub Action push event",
100 map[string]string{
101 "GITHUB_REF": "refs/heads/github-master",
102 },
103 "github-master",
104 },
105 {
106 "no branch var defined",
107 map[string]string{},
108 "",
109 },
110 }
111 for _, test := range tests {
112 resetBranchEnvs(test.envs)
113 envBranch := loadBranchFromEnv()
114 if envBranch != test.expectedBranch {
115 t.Errorf("%s: wrong branch returned. Expected %q, but got %q", test.testCase, test.expectedBranch, envBranch)
116 }
117 }
118 }
119
120 func resetBranchEnvs(values map[string]string) {
121 for _, envVar := range varNames {
122 os.Unsetenv(envVar)
123 }
124 for k, v := range values {
125 os.Setenv(k, v)
126 }
127 }
128
View as plain text