github.com/markusbkk/elvish@v0.0.0-20231204143114-91dc52438621/pkg/shell/interact_test.go (about) 1 package shell 2 3 import ( 4 "path/filepath" 5 "testing" 6 7 . "github.com/markusbkk/elvish/pkg/prog/progtest" 8 . "github.com/markusbkk/elvish/pkg/testutil" 9 ) 10 11 func TestInteract(t *testing.T) { 12 setupHomePaths(t) 13 InTempDir(t) 14 MustWriteFile("rc.elv", "echo hello from rc.elv") 15 MustWriteFile("rc-dnc.elv", "echo $a") 16 MustWriteFile("rc-fail.elv", "fail bad") 17 18 Test(t, &Program{}, 19 thatElvishInteract().WithStdin("echo hello\n").WritesStdout("hello\n"), 20 thatElvishInteract().WithStdin("fail mock\n").WritesStderrContaining("fail mock"), 21 22 thatElvishInteract("-rc", "rc.elv").WritesStdout("hello from rc.elv\n"), 23 // rc file does not compile 24 thatElvishInteract("-rc", "rc-dnc.elv"). 25 WritesStderrContaining("variable $a not found"), 26 // rc file throws exception 27 thatElvishInteract("-rc", "rc-fail.elv").WritesStderrContaining("fail bad"), 28 // rc file not existing is OK 29 thatElvishInteract("-rc", "rc-nonexistent.elv").DoesNothing(), 30 ) 31 } 32 33 func TestInteract_DefaultRCPath(t *testing.T) { 34 home := setupHomePaths(t) 35 // Legacy RC path 36 MustWriteFile( 37 filepath.Join(home, ".elvish", "rc.elv"), "echo hello legacy rc.elv") 38 // Note: non-legacy path is tested in interact_unix_test.go 39 40 Test(t, &Program{}, 41 thatElvishInteract().WritesStdout("hello legacy rc.elv\n"), 42 ) 43 } 44 45 func thatElvishInteract(args ...string) Case { 46 return ThatElvish(args...).WritesStderrContaining("") 47 }