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 }