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