github.com/kolbycrouch/elvish@v0.14.1-0.20210614162631-215b9ac1c423/pkg/shell/paths_test.go (about) 1 package shell 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 8 "src.elv.sh/pkg/env" 9 "src.elv.sh/pkg/testutil" 10 ) 11 12 var j = filepath.Join 13 14 func TestMakePaths_PopulatesUnsetSubPaths(t *testing.T) { 15 paths := MakePaths(os.Stderr, Paths{RunDir: "run", DataDir: "data", Bin: "bin"}) 16 wantPaths := Paths{ 17 RunDir: "run", 18 Sock: j("run", "sock"), 19 20 DataDir: "data", 21 Db: j("data", "db"), 22 Rc: j("data", "rc.elv"), 23 LibDir: j("data", "lib"), 24 25 Bin: "bin", 26 } 27 if paths != wantPaths { 28 t.Errorf("got paths %v, want %v", paths, wantPaths) 29 } 30 } 31 32 func TestMakePaths_RespectsSetSubPaths(t *testing.T) { 33 sock := "sock-override" 34 paths := MakePaths(os.Stderr, Paths{ 35 RunDir: "run", DataDir: "data", Bin: "bin", 36 Sock: sock, 37 }) 38 if paths.Sock != sock { 39 t.Errorf("got paths.Sock = %q, want %q", paths.Sock, sock) 40 } 41 } 42 43 func TestMakePaths_SetsAndCreatesDataDir(t *testing.T) { 44 home, cleanupDir := testutil.TestDir() 45 defer cleanupDir() 46 cleanupEnv := testutil.WithTempEnv(env.HOME, home) 47 defer cleanupEnv() 48 49 paths := MakePaths(os.Stderr, Paths{ 50 RunDir: "run", Bin: "bin", 51 }) 52 53 wantDataDir := home + "/.elvish" 54 if paths.DataDir != wantDataDir { 55 t.Errorf("paths.DataDir = %q, want %q", paths.DataDir, wantDataDir) 56 } 57 58 stat, err := os.Stat(paths.DataDir) 59 if err != nil { 60 t.Errorf("could not stat %q: %v", paths.DataDir, err) 61 } 62 if !stat.IsDir() { 63 t.Errorf("data dir %q is not dir", paths.DataDir) 64 } 65 }