github.com/markusbkk/elvish@v0.0.0-20231204143114-91dc52438621/pkg/edit/histwalk_test.go (about)

     1  package edit
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/markusbkk/elvish/pkg/cli/term"
     7  	"github.com/markusbkk/elvish/pkg/store/storedefs"
     8  	"github.com/markusbkk/elvish/pkg/ui"
     9  )
    10  
    11  func TestHistWalk_Up_EndOfHistory(t *testing.T) {
    12  	f := startHistwalkTest(t)
    13  
    14  	f.TTYCtrl.Inject(term.K(ui.Up))
    15  	f.TestTTYNotes(t,
    16  		"error: end of history", Styles,
    17  		"!!!!!!")
    18  }
    19  
    20  func TestHistWalk_Down_EndOfHistory(t *testing.T) {
    21  	f := startHistwalkTest(t)
    22  
    23  	// Not bound by default, so we need to use evals.
    24  	evals(f.Evaler, `edit:history:down`)
    25  	f.TestTTYNotes(t,
    26  		"error: end of history", Styles,
    27  		"!!!!!!")
    28  }
    29  
    30  func TestHistWalk_Accept(t *testing.T) {
    31  	f := startHistwalkTest(t)
    32  
    33  	f.TTYCtrl.Inject(term.K(ui.Right))
    34  	f.TestTTY(t,
    35  		"~> echo a", Styles,
    36  		"   vvvv  ", term.DotHere,
    37  	)
    38  }
    39  
    40  func TestHistWalk_Close(t *testing.T) {
    41  	f := startHistwalkTest(t)
    42  
    43  	f.TTYCtrl.Inject(term.K('[', ui.Ctrl))
    44  	f.TestTTY(t, "~> ", term.DotHere)
    45  }
    46  
    47  func TestHistWalk_DownOrQuit(t *testing.T) {
    48  	f := startHistwalkTest(t)
    49  
    50  	f.TTYCtrl.Inject(term.K(ui.Down))
    51  	f.TestTTY(t, "~> ", term.DotHere)
    52  }
    53  
    54  func TestHistory_FastForward(t *testing.T) {
    55  	f := setup(t, storeOp(func(s storedefs.Store) {
    56  		s.AddCmd("echo a")
    57  	}))
    58  
    59  	f.Store.AddCmd("echo b")
    60  	evals(f.Evaler, `edit:history:fast-forward`)
    61  	f.TTYCtrl.Inject(term.K(ui.Up))
    62  	f.TestTTY(t,
    63  		"~> echo b", Styles,
    64  		"   VVVV__", term.DotHere, "\n",
    65  		" HISTORY #2 ", Styles,
    66  		"************",
    67  	)
    68  }
    69  
    70  func startHistwalkTest(t *testing.T) *fixture {
    71  	// The part of the test shared by all tests.
    72  	f := setup(t, storeOp(func(s storedefs.Store) {
    73  		s.AddCmd("echo a")
    74  	}))
    75  
    76  	f.TTYCtrl.Inject(term.K(ui.Up))
    77  	f.TestTTY(t,
    78  		"~> echo a", Styles,
    79  		"   VVVV__", term.DotHere, "\n",
    80  		" HISTORY #1 ", Styles,
    81  		"************",
    82  	)
    83  	return f
    84  }