github.com/windmilleng/wat@v0.0.2-0.20180626175338-9349b638e250/cli/dirs/dirs_test.go (about) 1 package dirs 2 3 import ( 4 "os" 5 "path" 6 "path/filepath" 7 "testing" 8 ) 9 10 func TestWindmillDir(t *testing.T) { 11 emptyPath := "" 12 oldWmdaemonHome := os.Getenv("WMDAEMON_HOME") 13 oldHome := os.Getenv("HOME") 14 oldWindmillDir := os.Getenv("WINDMILL_DIR") 15 defer os.Setenv("WMDAEMON_HOME", oldWmdaemonHome) 16 defer os.Setenv("HOME", oldHome) 17 defer os.Setenv("WINDMILL_DIR", oldWindmillDir) 18 tmpHome := os.TempDir() 19 20 f := setup(t) 21 22 os.Setenv("HOME", tmpHome) 23 24 os.Setenv("WMDAEMON_HOME", emptyPath) 25 f.assertWindmillDir(path.Join(tmpHome, ".windmill"), "empty WMDAEMON_HOME") 26 27 tmpWmdaemonHome := os.TempDir() 28 os.Setenv("WMDAEMON_HOME", tmpWmdaemonHome) 29 f.assertWindmillDir(tmpWmdaemonHome, "tmp WMDAEMON_HOME") 30 31 nonExistentWmdaemonHome := path.Join(tmpWmdaemonHome, "foo") 32 os.Setenv("WMDAEMON_HOME", nonExistentWmdaemonHome) 33 f.assertWindmillDir(nonExistentWmdaemonHome, "nonexistent WMDAEMON_HOME") 34 35 wmDir := os.TempDir() 36 os.Setenv("WINDMILL_DIR", wmDir) 37 f.assertWindmillDir(nonExistentWmdaemonHome, "prefer WMDAEMON_HOME") // prefer WMDAEMON_HOME 38 39 os.Unsetenv("WMDAEMON_HOME") 40 f.assertWindmillDir(wmDir, "no WMDAEMON_HOME") 41 } 42 43 type fixture struct { 44 t *testing.T 45 } 46 47 func setup(t *testing.T) *fixture { 48 return &fixture{t: t} 49 } 50 51 func (f *fixture) assertWindmillDir(expected, testCase string) { 52 actual, err := GetWindmillDir() 53 if err != nil { 54 f.t.Error(err) 55 } 56 57 // NOTE(maia): filepath behavior is weird on macOS, use abs path to mitigate 58 absExpected, err := filepath.Abs(expected) 59 if err != nil { 60 f.t.Error("[filepath.Abs]", err) 61 } 62 63 if actual != absExpected { 64 f.t.Errorf("[TEST CASE: %s] got windmill dir %q; expected %q", testCase, actual, absExpected) 65 } 66 }