cat / 012
clone

a spreadsheet for the terminal: lotus 1-2-3 looks, google sheets keys and formulas, one go binary

cat/module-path
012 / e2e / vimmore_test.go
vimmore_test.go 1.9K
1package e2e23import (4 "os"5 "path/filepath"6 "testing"7 "time"8)910// . repeats a change, "a keeps a copy of its own, marks and two quotes11// jump back, cc clears a row to retype, Up on the : line recalls a line,12// and :w! writes over a file changed on disk.13func TestVimRepeatRegistersMarks(t *testing.T) {14 t.Parallel()15 dir := t.TempDir()16 s := start(t, dir)17 vimOn(s)18 s.keys("i", "a", "<tab>", "i", "1", "<enter>")19 s.keys("i", "b", "<tab>", "i", "2", "<enter>")20 s.keys("i", "c", "<tab>", "i", "3", "<enter>")21 s.waitForBar("A4", "")2223 // A mark on B1, a jump away and back, then back to the row jumped from.24 s.keys("gg", "l", "mq", "G", "`q")25 s.waitForBar("B1", "1")26 s.keys("''")27 s.waitForBar("A3", "c")2829 // x and . clear two cells; "ayy keeps row 1 while dd fills the30 // clipboard, and "ap pastes row 1 back as a new row.31 s.keys("gg", "l", "x", "j", ".")32 s.waitForBar("B2", "")33 s.keys("gg", `"ayy`, "j", "dd", "G", "0", `"ap`)34 s.waitForBar("A3", "a")3536 // cc clears the row and starts typing; . does it again below.37 s.keys("gg", "cc", "top", "<enter>")38 s.waitForBar("A2", "c")39 s.keys(".")40 s.waitForBar("A3", "a")41 s.keys("k")42 s.waitForBar("A2", "top")4344 // The : line remembers what ran.45 s.keys(":B3", "<enter>", "gg", ":", "<up>")46 s.waitFor(":B3")47 s.keys("<enter>")48 s.waitForBar("B3", "")4950 s.keys(":w vim", "<enter>")51 s.eventually("saved", func() bool { return s.title() == "012 - vim.012" })52 name := filepath.Join(dir, "vim.012")53 later := time.Now().Add(time.Minute)54 if err := os.WriteFile(name, []byte("{}"), 0o644); err != nil {55 t.Fatal(err)56 }57 if err := os.Chtimes(name, later, later); err != nil {58 t.Fatal(err)59 }60 s.keys("gg", "0", "x", ":w", "<enter>")61 s.waitFor("changed on disk")62 s.keys("<esc>", ":w!", "<enter>")63 s.eventually("written", func() bool {64 data, _ := os.ReadFile(name)65 return string(data) != "{}" && s.title() == "012 - vim.012"66 })67}