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  }