github.com/jenkins-x/jx-api@v0.0.24/cmd/codegen/util/go_test.go (about)

     1  package util_test
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/jenkins-x/jx-api/cmd/codegen/util"
     7  
     8  	"io/ioutil"
     9  	"os"
    10  	"path/filepath"
    11  	"testing"
    12  
    13  	"github.com/stretchr/testify/assert"
    14  )
    15  
    16  const (
    17  	gopath = "GOPATH"
    18  )
    19  
    20  func Test_ensure_gopath_set(t *testing.T) {
    21  	tmpGoDir, err := ioutil.TempDir("", "jx-codegen-tests")
    22  	if err != nil {
    23  		assert.Fail(t, "unable to create test directory")
    24  	}
    25  	defer os.RemoveAll(tmpGoDir)
    26  	err = os.Setenv(gopath, tmpGoDir)
    27  	if err != nil {
    28  		assert.Fail(t, "unable to set env variable")
    29  	}
    30  
    31  	err = util.EnsureGoPath()
    32  	assert.NoError(t, err, "GOPATH should be set")
    33  }
    34  
    35  func Test_ensure_gopath_unset(t *testing.T) {
    36  	err := os.Setenv(gopath, "")
    37  	if err != nil {
    38  		assert.Fail(t, "unable to set env variable")
    39  	}
    40  
    41  	err = util.EnsureGoPath()
    42  	assert.Error(t, err, "GOPATH should not be set")
    43  	assert.Equal(t, "GOPATH needs to be set", err.Error())
    44  }
    45  
    46  func Test_ensure_gopath_does_not_exist(t *testing.T) {
    47  	err := os.Setenv(gopath, "snafu")
    48  	if err != nil {
    49  		assert.Fail(t, "unable to set env variable")
    50  	}
    51  
    52  	err = util.EnsureGoPath()
    53  	assert.Error(t, err, "GOPATH should not be set")
    54  	assert.Equal(t, "the GOPATH directory snafu does not exist", err.Error())
    55  }
    56  
    57  func Test_get_gopath(t *testing.T) {
    58  	tmpGoDir, err := ioutil.TempDir("", "jx-codegen-tests")
    59  	if err != nil {
    60  		assert.Fail(t, "unable to create test directory")
    61  	}
    62  	defer os.RemoveAll(tmpGoDir)
    63  	err = os.Setenv(gopath, tmpGoDir)
    64  	if err != nil {
    65  		assert.Fail(t, "unable to set env variable")
    66  	}
    67  
    68  	goPath := util.GoPath()
    69  	assert.Equal(t, tmpGoDir, goPath)
    70  }
    71  
    72  func Test_get_gopath_unset_env(t *testing.T) {
    73  	err := os.Setenv(gopath, "")
    74  	if err != nil {
    75  		assert.Fail(t, "unable to set env variable")
    76  	}
    77  
    78  	goPath := util.GoPath()
    79  	assert.Equal(t, "", goPath)
    80  }
    81  
    82  func Test_get_gopath_multiple_elements(t *testing.T) {
    83  	tmpGoDir, err := ioutil.TempDir("", "jx-codegen-tests")
    84  	if err != nil {
    85  		assert.Fail(t, "unable to create test directory")
    86  	}
    87  	defer os.RemoveAll(tmpGoDir)
    88  	err = os.Setenv(gopath, fmt.Sprintf("%s%sfoo", tmpGoDir, string(os.PathListSeparator)))
    89  	if err != nil {
    90  		assert.Fail(t, "unable to set env variable")
    91  	}
    92  
    93  	goPath := util.GoPath()
    94  	assert.Equal(t, tmpGoDir, goPath)
    95  }
    96  
    97  func Test_get_gopath_src(t *testing.T) {
    98  	tmpGoDir, err := ioutil.TempDir("", "jx-codegen-tests")
    99  	if err != nil {
   100  		assert.Fail(t, "unable to create test directory")
   101  	}
   102  	defer os.RemoveAll(tmpGoDir)
   103  	err = os.Setenv(gopath, tmpGoDir)
   104  	if err != nil {
   105  		assert.Fail(t, "unable to set env variable")
   106  	}
   107  
   108  	goPathSrc := util.GoPathSrc(tmpGoDir)
   109  	assert.Equal(t, filepath.Join(tmpGoDir, "src"), goPathSrc)
   110  }
   111  
   112  func Test_get_gopath_bin(t *testing.T) {
   113  	tmpGoDir, err := ioutil.TempDir("", "jx-codegen-tests")
   114  	if err != nil {
   115  		assert.Fail(t, "unable to create test directory")
   116  	}
   117  	defer os.RemoveAll(tmpGoDir)
   118  	err = os.Setenv(gopath, tmpGoDir)
   119  	if err != nil {
   120  		assert.Fail(t, "unable to set env variable")
   121  	}
   122  
   123  	goPathBin := util.GoPathBin(tmpGoDir)
   124  	assert.Equal(t, filepath.Join(tmpGoDir, "bin"), goPathBin)
   125  }