src.elv.sh@v0.21.0-dev.0.20240515223629-06979efb9a2a/pkg/edit/histwalk_test.go (about)

     1  package edit
     2  
     3  import (
     4  	"testing"
     5  
     6  	"src.elv.sh/pkg/cli/term"
     7  	"src.elv.sh/pkg/store/storedefs"
     8  	"src.elv.sh/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  	evals(f.Evaler, `edit:history:accept; edit:redraw`)
    34  
    35  	f.TestTTY(t,
    36  		"~> echo a", Styles,
    37  		"   vvvv  ", term.DotHere,
    38  	)
    39  }
    40  
    41  func TestHistWalk_ImplicitAccept(t *testing.T) {
    42  	f := startHistwalkTest(t)
    43  
    44  	f.TTYCtrl.Inject(term.K(ui.Right))
    45  	f.TestTTY(t,
    46  		"~> echo a", Styles,
    47  		"   vvvv  ", term.DotHere,
    48  	)
    49  }
    50  
    51  func TestHistWalk_Close(t *testing.T) {
    52  	f := startHistwalkTest(t)
    53  
    54  	f.TTYCtrl.Inject(term.K('[', ui.Ctrl))
    55  	f.TestTTY(t, "~> ", term.DotHere)
    56  }
    57  
    58  func TestHistWalk_DownOrQuit(t *testing.T) {
    59  	f := startHistwalkTest(t)
    60  
    61  	f.TTYCtrl.Inject(term.K(ui.Down))
    62  	f.TestTTY(t, "~> ", term.DotHere)
    63  }
    64  
    65  func TestHistory_FastForward(t *testing.T) {
    66  	f := setup(t, storeOp(func(s storedefs.Store) {
    67  		s.AddCmd("echo a")
    68  	}))
    69  
    70  	f.Store.AddCmd("echo b")
    71  	evals(f.Evaler, `edit:history:fast-forward`)
    72  	f.TTYCtrl.Inject(term.K(ui.Up))
    73  	f.TestTTY(t,
    74  		"~> echo b", Styles,
    75  		"   VVVV__", term.DotHere, "\n",
    76  		" HISTORY #2 ", Styles,
    77  		"************",
    78  	)
    79  }
    80  
    81  func startHistwalkTest(t *testing.T) *fixture {
    82  	// The part of the test shared by all tests.
    83  	f := setup(t, storeOp(func(s storedefs.Store) {
    84  		s.AddCmd("echo a")
    85  	}))
    86  
    87  	f.TTYCtrl.Inject(term.K(ui.Up))
    88  	f.TestTTY(t,
    89  		"~> echo a", Styles,
    90  		"   VVVV__", term.DotHere, "\n",
    91  		" HISTORY #1 ", Styles,
    92  		"************",
    93  	)
    94  	return f
    95  }