summaryrefslogtreecommitdiff
path: root/libgo/go/cmd/go/internal/cache/default_unix_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/cmd/go/internal/cache/default_unix_test.go')
-rw-r--r--libgo/go/cmd/go/internal/cache/default_unix_test.go67
1 files changed, 67 insertions, 0 deletions
diff --git a/libgo/go/cmd/go/internal/cache/default_unix_test.go b/libgo/go/cmd/go/internal/cache/default_unix_test.go
new file mode 100644
index 00000000000..a207497a42c
--- /dev/null
+++ b/libgo/go/cmd/go/internal/cache/default_unix_test.go
@@ -0,0 +1,67 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !windows,!darwin,!plan9
+
+package cache
+
+import (
+ "os"
+ "strings"
+ "testing"
+)
+
+func TestDefaultDir(t *testing.T) {
+ goCacheDir := "/tmp/test-go-cache"
+ xdgCacheDir := "/tmp/test-xdg-cache"
+ homeDir := "/tmp/test-home"
+
+ // undo env changes when finished
+ defer func(GOCACHE, XDG_CACHE_HOME, HOME string) {
+ os.Setenv("GOCACHE", GOCACHE)
+ os.Setenv("XDG_CACHE_HOME", XDG_CACHE_HOME)
+ os.Setenv("HOME", HOME)
+ }(os.Getenv("GOCACHE"), os.Getenv("XDG_CACHE_HOME"), os.Getenv("HOME"))
+
+ os.Setenv("GOCACHE", goCacheDir)
+ os.Setenv("XDG_CACHE_HOME", xdgCacheDir)
+ os.Setenv("HOME", homeDir)
+
+ dir, showWarnings := defaultDir()
+ if dir != goCacheDir {
+ t.Errorf("Cache DefaultDir %q should be $GOCACHE %q", dir, goCacheDir)
+ }
+ if !showWarnings {
+ t.Error("Warnings should be shown when $GOCACHE is set")
+ }
+
+ os.Unsetenv("GOCACHE")
+ dir, showWarnings = defaultDir()
+ if !strings.HasPrefix(dir, xdgCacheDir+"/") {
+ t.Errorf("Cache DefaultDir %q should be under $XDG_CACHE_HOME %q when $GOCACHE is unset", dir, xdgCacheDir)
+ }
+ if !showWarnings {
+ t.Error("Warnings should be shown when $XDG_CACHE_HOME is set")
+ }
+
+ os.Unsetenv("XDG_CACHE_HOME")
+ dir, showWarnings = defaultDir()
+ if !strings.HasPrefix(dir, homeDir+"/.cache/") {
+ t.Errorf("Cache DefaultDir %q should be under $HOME/.cache %q when $GOCACHE and $XDG_CACHE_HOME are unset", dir, homeDir+"/.cache")
+ }
+ if !showWarnings {
+ t.Error("Warnings should be shown when $HOME is not /")
+ }
+
+ os.Unsetenv("HOME")
+ if dir, _ := defaultDir(); dir != "off" {
+ t.Error("Cache not disabled when $GOCACHE, $XDG_CACHE_HOME, and $HOME are unset")
+ }
+
+ os.Setenv("HOME", "/")
+ if _, showWarnings := defaultDir(); showWarnings {
+ // https://golang.org/issue/26280
+ t.Error("Cache initalization warnings should be squelched when $GOCACHE and $XDG_CACHE_HOME are unset and $HOME is /")
+ }
+}