Browse Source

call go env GOPATH if env var is not found (Refs #60)

pull/1842/head
Anton Kaliaev 7 years ago
parent
commit
35e38e8932
No known key found for this signature in database GPG Key ID: 7B6881D965918214
2 changed files with 38 additions and 1 deletions
  1. +15
    -1
      common/os.go
  2. +23
    -0
      common/os_test.go

+ 15
- 1
common/os.go View File

@ -6,6 +6,7 @@ import (
"io" "io"
"io/ioutil" "io/ioutil"
"os" "os"
"os/exec"
"os/signal" "os/signal"
"path/filepath" "path/filepath"
"strings" "strings"
@ -13,9 +14,22 @@ import (
) )
var ( var (
GoPath = os.Getenv("GOPATH")
GoPath = gopath()
) )
func gopath() string {
path := os.Getenv("GOPATH")
if len(path) == 0 {
goCmd := exec.Command("go", "env", "GOPATH")
out, err := goCmd.Output()
if err != nil {
panic(fmt.Sprintf("failed to determine gopath: %v", err))
}
path = string(out)
}
return path
}
func TrapSignal(cb func()) { func TrapSignal(cb func()) {
c := make(chan os.Signal, 1) c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt, syscall.SIGTERM) signal.Notify(c, os.Interrupt, syscall.SIGTERM)


+ 23
- 0
common/os_test.go View File

@ -27,3 +27,26 @@ func TestWriteFileAtomic(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
} }
func TestGoPath(t *testing.T) {
// restore original gopath upon exit
path := os.Getenv("GOPATH")
defer func() {
_ = os.Setenv("GOPATH", path)
}()
err := os.Setenv("GOPATH", "~/testgopath")
if err != nil {
t.Fatal(err)
}
path = gopath()
if path != "~/testgopath" {
t.Fatalf("gopath should return GOPATH env var if set, 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)
}
}

Loading…
Cancel
Save