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 }