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  }