env: warning and fallback if LLGO_ROOT is invalid
This commit is contained in:
8
compiler/internal/env/env.go
vendored
8
compiler/internal/env/env.go
vendored
@@ -41,8 +41,12 @@ func LLGoRuntimeDir() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func LLGoROOT() string {
|
func LLGoROOT() string {
|
||||||
if root, ok := isLLGoRoot(os.Getenv("LLGO_ROOT")); ok {
|
llgoRootEnv := os.Getenv("LLGO_ROOT")
|
||||||
return root
|
if llgoRootEnv != "" {
|
||||||
|
if root, ok := isLLGoRoot(llgoRootEnv); ok {
|
||||||
|
return root
|
||||||
|
}
|
||||||
|
fmt.Fprintf(os.Stderr, "WARNING: LLGO_ROOT is not a valid LLGO root: %s\n", llgoRootEnv)
|
||||||
}
|
}
|
||||||
// Get executable path
|
// Get executable path
|
||||||
exe, err := os.Executable()
|
exe, err := os.Executable()
|
||||||
|
|||||||
35
compiler/internal/env/env_test.go
vendored
35
compiler/internal/env/env_test.go
vendored
@@ -58,10 +58,28 @@ func TestLLGoRuntimeDir(t *testing.T) {
|
|||||||
defer os.Setenv("LLGO_ROOT", origLLGoRoot)
|
defer os.Setenv("LLGO_ROOT", origLLGoRoot)
|
||||||
|
|
||||||
os.Setenv("LLGO_ROOT", "/nonexistent/path")
|
os.Setenv("LLGO_ROOT", "/nonexistent/path")
|
||||||
wd, _ := os.Getwd()
|
wd, err := os.Getwd()
|
||||||
expected, _ := filepath.Abs(filepath.Join(wd, "../../../runtime"))
|
if err != nil {
|
||||||
if got := LLGoRuntimeDir(); got != expected {
|
t.Fatal(err)
|
||||||
t.Errorf("LLGoRuntimeDir() = %v, want %v", got, expected)
|
}
|
||||||
|
runtimeDir := filepath.Join(wd, "../../../runtime")
|
||||||
|
if got := LLGoRuntimeDir(); got != runtimeDir {
|
||||||
|
t.Errorf("LLGoRuntimeDir() = %v, want %v", got, runtimeDir)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("devel runtime dir", func(t *testing.T) {
|
||||||
|
origLLGoRoot := os.Getenv("LLGO_ROOT")
|
||||||
|
defer os.Setenv("LLGO_ROOT", origLLGoRoot)
|
||||||
|
|
||||||
|
os.Setenv("LLGO_ROOT", "")
|
||||||
|
wd, err := os.Getwd()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
runtimeDir := filepath.Join(wd, "../../../runtime")
|
||||||
|
if got := LLGoRuntimeDir(); got != runtimeDir {
|
||||||
|
t.Errorf("LLGoRuntimeDir() = %v, want %v", got, runtimeDir)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -92,8 +110,13 @@ func TestLLGoROOT(t *testing.T) {
|
|||||||
defer os.Setenv("LLGO_ROOT", origLLGoRoot)
|
defer os.Setenv("LLGO_ROOT", origLLGoRoot)
|
||||||
|
|
||||||
os.Setenv("LLGO_ROOT", "/nonexistent/path")
|
os.Setenv("LLGO_ROOT", "/nonexistent/path")
|
||||||
if got := LLGoROOT(); got != "" {
|
wd, err := os.Getwd()
|
||||||
t.Errorf("LLGoROOT() = %v, want empty string", got)
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
rootDir := filepath.Join(wd, "../../..")
|
||||||
|
if got := LLGoROOT(); got != rootDir {
|
||||||
|
t.Errorf("LLGoROOT() = %v, want %v", got, rootDir)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user