-
Notifications
You must be signed in to change notification settings - Fork 48
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #68 from teddylear/feature/xdg-base-dir-2
Feature/xdg base dir 2
- Loading branch information
Showing
10 changed files
with
435 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
// +build darwin freebsd linux netbsd openbsd solaris | ||
|
||
package packer | ||
|
||
import ( | ||
"os" | ||
"path/filepath" | ||
) | ||
|
||
func getDefaultCacheDir() string { | ||
var defaultConfigFileDir string | ||
|
||
if xdgCacheHome := os.Getenv("XDG_CACHE_HOME"); xdgCacheHome != "" { | ||
return filepath.Join(xdgCacheHome, "packer") | ||
} | ||
|
||
homeDir := os.Getenv("HOME") | ||
defaultConfigFileDir = filepath.Join(homeDir, ".cache", "packer") | ||
|
||
return defaultConfigFileDir | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
// +build darwin freebsd linux netbsd openbsd solaris | ||
|
||
package packer | ||
|
||
import ( | ||
"io/ioutil" | ||
"os" | ||
"path/filepath" | ||
"testing" | ||
) | ||
|
||
func TestCachePath(t *testing.T) { | ||
// temporary directories for env vars | ||
xdgCacheHomeTempDir, err := ioutil.TempDir(os.TempDir(), "*") | ||
if err != nil { | ||
t.Fatalf("Failed to create temp test directory: failing test: %v", err) | ||
} | ||
defer os.RemoveAll(xdgCacheHomeTempDir) | ||
packerCacheTempDir, err := ioutil.TempDir(os.TempDir(), "*") | ||
if err != nil { | ||
t.Fatalf("Failed to create temp test directory: failing test: %v", err) | ||
} | ||
defer os.RemoveAll(packerCacheTempDir) | ||
|
||
// reset env | ||
packerCacheDir := os.Getenv("PACKER_CACHE_DIR") | ||
os.Setenv("PACKER_CACHE_DIR", "") | ||
defer func() { | ||
os.Setenv("PACKER_CACHE_DIR", packerCacheDir) | ||
}() | ||
|
||
xdgCacheHomeDir := os.Getenv("XDG_CACHE_HOME") | ||
os.Setenv("XDG_CACHE_HOME", "") | ||
defer func() { | ||
os.Setenv("XDG_CACHE_HOME", xdgCacheHomeDir) | ||
}() | ||
|
||
type args struct { | ||
paths []string | ||
} | ||
tests := []struct { | ||
name string | ||
args args | ||
env map[string]string | ||
want string | ||
wantErr bool | ||
}{ | ||
{ | ||
"base", | ||
args{}, | ||
nil, | ||
filepath.Join(os.Getenv("HOME"), ".cache", "packer"), | ||
false, | ||
}, | ||
{ | ||
"base and path", | ||
args{[]string{"a", "b"}}, | ||
nil, | ||
filepath.Join(os.Getenv("HOME"), ".cache", "packer", "a", "b"), | ||
false, | ||
}, | ||
{ | ||
"env PACKER_CACHE_DIR and path", | ||
args{[]string{"a", "b"}}, | ||
map[string]string{"PACKER_CACHE_DIR": packerCacheTempDir}, | ||
filepath.Join(packerCacheTempDir, "a", "b"), | ||
false, | ||
}, | ||
{ | ||
"env XDG_CACHE_HOME and path", | ||
args{[]string{"a", "b"}}, | ||
map[string]string{"XDG_CACHE_HOME": xdgCacheHomeTempDir}, | ||
filepath.Join(xdgCacheHomeTempDir, "packer", "a", "b"), | ||
false, | ||
}, | ||
{ | ||
"env PACKER_CACHE_DIR, XDG_CACHE_HOME, and path", | ||
args{[]string{"a", "b"}}, | ||
map[string]string{ | ||
"XDG_CACHE_HOME": xdgCacheHomeTempDir, | ||
"PACKER_CACHE_DIR": packerCacheTempDir, | ||
}, | ||
filepath.Join(packerCacheTempDir, "a", "b"), | ||
false, | ||
}, | ||
} | ||
for _, tt := range tests { | ||
t.Run(tt.name, func(t *testing.T) { | ||
for k, v := range tt.env { | ||
os.Setenv(k, v) | ||
} | ||
got, err := CachePath(tt.args.paths...) | ||
if (err != nil) != tt.wantErr { | ||
t.Errorf("CachePath() error = %v, wantErr %v", err, tt.wantErr) | ||
return | ||
} | ||
if got != tt.want { | ||
t.Errorf("CachePath() = %v, want %v", got, tt.want) | ||
} | ||
resetTestEnv() | ||
}) | ||
} | ||
} | ||
|
||
func resetTestEnv() { | ||
os.Setenv("PACKER_CACHE_DIR", "") | ||
os.Setenv("XDG_CACHE_HOME", "") | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
// +build windows | ||
|
||
package packer | ||
|
||
const ( | ||
defaultConfigFile = "packer_cache" | ||
) | ||
|
||
func getDefaultCacheDir() string { | ||
return defaultConfigFile | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,5 @@ | ||
// +build windows | ||
|
||
package packer | ||
|
||
import ( | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.