make GoPath a function
otherwise it could try to execute go binary and panic if no go binary found. See https://github.com/tendermint/tendermint/issues/782
This commit is contained in:
parent
93bd2081dd
commit
bcf15e527d
13
common/os.go
13
common/os.go
|
@ -13,11 +13,15 @@ import (
|
|||
"syscall"
|
||||
)
|
||||
|
||||
var (
|
||||
GoPath = gopath()
|
||||
)
|
||||
var gopath string
|
||||
|
||||
// GoPath returns GOPATH env variable value. If it is not set, this function
|
||||
// will try to call `go env GOPATH` subcommand.
|
||||
func GoPath() string {
|
||||
if gopath != "" {
|
||||
return gopath
|
||||
}
|
||||
|
||||
func gopath() string {
|
||||
path := os.Getenv("GOPATH")
|
||||
if len(path) == 0 {
|
||||
goCmd := exec.Command("go", "env", "GOPATH")
|
||||
|
@ -27,6 +31,7 @@ func gopath() string {
|
|||
}
|
||||
path = string(out)
|
||||
}
|
||||
gopath = path
|
||||
return path
|
||||
}
|
||||
|
||||
|
|
|
@ -39,14 +39,31 @@ func TestGoPath(t *testing.T) {
|
|||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
path = gopath()
|
||||
path = GoPath()
|
||||
if path != "~/testgopath" {
|
||||
t.Fatalf("gopath should return GOPATH env var if set, got %v", path)
|
||||
t.Fatalf("should get GOPATH env var value, got %v", path)
|
||||
}
|
||||
os.Unsetenv("GOPATH")
|
||||
|
||||
path = gopath()
|
||||
if path == "~/testgopath" || path == "" {
|
||||
t.Fatalf("gopath should return go env GOPATH result if env var does not exist, got %v", path)
|
||||
path = GoPath()
|
||||
if path != "~/testgopath" {
|
||||
t.Fatalf("subsequent calls should return the same value, got %v", path)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGoPathWithoutEnvVar(t *testing.T) {
|
||||
// restore original gopath upon exit
|
||||
path := os.Getenv("GOPATH")
|
||||
defer func() {
|
||||
_ = os.Setenv("GOPATH", path)
|
||||
}()
|
||||
|
||||
os.Unsetenv("GOPATH")
|
||||
// reset cache
|
||||
gopath = ""
|
||||
|
||||
path = GoPath()
|
||||
if path == "" || path == "~/testgopath" {
|
||||
t.Fatalf("should get nonempty result of calling go env GOPATH, got %v", path)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue