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  }