...

Source file src/github.com/mattn/goveralls/gitinfo_test.go

Documentation: github.com/mattn/goveralls

     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