github.com/smithoss/goveralls@v0.0.0-20190920204720-1fdbb5119c20/gitinfo_test.go (about) 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 "no branch var defined", 100 map[string]string{}, 101 "", 102 }, 103 } 104 for _, test := range tests { 105 resetBranchEnvs(test.envs) 106 envBranch := loadBranchFromEnv() 107 if envBranch != test.expectedBranch { 108 t.Errorf("%s: wrong branch returned. Expected %q, but got %q", test.testCase, test.expectedBranch, envBranch) 109 } 110 } 111 } 112 113 func resetBranchEnvs(values map[string]string) { 114 for _, envVar := range []string{"CI_BRANCH", "CIRCLE_BRANCH", "GIT_BRANCH", "TRAVIS_BRANCH", "APPVEYOR_REPO_BRANCH", "WERCKER_GIT_BRANCH", "DRONE_BRANCH", "BUILDKITE_BRANCH", "BRANCH_NAME"} { 115 os.Unsetenv(envVar) 116 } 117 for k, v := range values { 118 os.Setenv(k, v) 119 } 120 }