mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
* Remove `make updatedeps` from Travis build. We'll follow up with more specific plans around dependency updating in subsequent PRs. * Update all `make` targets to set `GO15VENDOREXPERIMENT=1` and to filter out `/vendor/` from `./...` where appropriate. * Temporarily remove `vet` from the `make test` target until we can figure out how to get it to not vet `vendor/`. (Initial experimentation failed to yield the proper incantation.) Everything is pinned to current master, with the exception of: * Azure/azure-sdk-for-go which is pinned before the breaking change today * aws/aws-sdk-go which is pinned to the most recent tag The documentation still needs to be updated, which we can do in a follow up PR. The goal here is to unblock release.
113 lines
1.6 KiB
Go
113 lines
1.6 KiB
Go
package homedir
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"os/user"
|
|
"testing"
|
|
)
|
|
|
|
func patchEnv(key, value string) func() {
|
|
bck := os.Getenv(key)
|
|
deferFunc := func() {
|
|
os.Setenv(key, bck)
|
|
}
|
|
|
|
os.Setenv(key, value)
|
|
return deferFunc
|
|
}
|
|
|
|
func BenchmarkDir(b *testing.B) {
|
|
// We do this for any "warmups"
|
|
for i := 0; i < 10; i++ {
|
|
Dir()
|
|
}
|
|
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
Dir()
|
|
}
|
|
}
|
|
|
|
func TestDir(t *testing.T) {
|
|
u, err := user.Current()
|
|
if err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
|
|
dir, err := Dir()
|
|
if err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
|
|
if u.HomeDir != dir {
|
|
t.Fatalf("%#v != %#v", u.HomeDir, dir)
|
|
}
|
|
}
|
|
|
|
func TestExpand(t *testing.T) {
|
|
u, err := user.Current()
|
|
if err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
|
|
cases := []struct {
|
|
Input string
|
|
Output string
|
|
Err bool
|
|
}{
|
|
{
|
|
"/foo",
|
|
"/foo",
|
|
false,
|
|
},
|
|
|
|
{
|
|
"~/foo",
|
|
fmt.Sprintf("%s/foo", u.HomeDir),
|
|
false,
|
|
},
|
|
|
|
{
|
|
"",
|
|
"",
|
|
false,
|
|
},
|
|
|
|
{
|
|
"~",
|
|
u.HomeDir,
|
|
false,
|
|
},
|
|
|
|
{
|
|
"~foo/foo",
|
|
"",
|
|
true,
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
actual, err := Expand(tc.Input)
|
|
if (err != nil) != tc.Err {
|
|
t.Fatalf("Input: %#v\n\nErr: %s", tc.Input, err)
|
|
}
|
|
|
|
if actual != tc.Output {
|
|
t.Fatalf("Input: %#v\n\nOutput: %#v", tc.Input, actual)
|
|
}
|
|
}
|
|
|
|
DisableCache = true
|
|
defer func() { DisableCache = false }()
|
|
defer patchEnv("HOME", "/custom/path/")()
|
|
expected := "/custom/path/foo/bar"
|
|
actual, err := Expand("~/foo/bar")
|
|
|
|
if err != nil {
|
|
t.Errorf("No error is expected, got: %v", err)
|
|
} else if actual != "/custom/path/foo/bar" {
|
|
t.Errorf("Expected: %v; actual: %v", expected, actual)
|
|
}
|
|
}
|