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 }