From 18595cad2e818ada494321621a69a7a85282f241 Mon Sep 17 00:00:00 2001 From: Eric Roshan-Eisner Date: Sat, 1 Jun 2024 18:02:09 -0700 Subject: [PATCH] vi: simplify tests I wrapped the repeated test infrastructure in a `vitest` function and inlined the dozens of tiny input files. I shortened some of the test inputs to be clearer and discovered a couple bugs, left for now as commented out tests: * `b` movement is off by one. * Deleting/moving the last part of the last line of the file is off by one, usually leaving the final character in place. --- tests/files/vi/D_first.in | 3 - tests/files/vi/D_last.in | 4 - tests/files/vi/ascii.txt | 4 - tests/files/vi/ascii_D_first.out | 4 - tests/files/vi/ascii_D_last.out | 4 - tests/files/vi/ascii_dd_first.out | 3 - tests/files/vi/ascii_dd_last.out | 3 - tests/files/vi/ascii_dw_first.out | 4 - tests/files/vi/ascii_dw_last.out | 4 - tests/files/vi/ascii_insert_after_w.out | 4 - tests/files/vi/ascii_insert_eof.out | 4 - tests/files/vi/ascii_insert_multi.out | 4 - tests/files/vi/ascii_insert_multi_yy_push.out | 5 - tests/files/vi/ascii_insert_sof.out | 4 - tests/files/vi/ascii_yw_push.out | 4 - tests/files/vi/dd_first.in | 3 - tests/files/vi/dd_last.in | 4 - tests/files/vi/dw_first.in | 3 - tests/files/vi/dw_last.in | 3 - tests/files/vi/insert_after_w.in | 2 - tests/files/vi/insert_eof.in | 2 - tests/files/vi/insert_multi.in | 2 - tests/files/vi/insert_multi_yy_push.in | 2 - tests/files/vi/insert_sof.in | 2 - tests/files/vi/yw_push.in | 3 - tests/vi.test | 143 +++--------------- 26 files changed, 19 insertions(+), 208 deletions(-) delete mode 100644 tests/files/vi/D_first.in delete mode 100644 tests/files/vi/D_last.in delete mode 100644 tests/files/vi/ascii.txt delete mode 100644 tests/files/vi/ascii_D_first.out delete mode 100644 tests/files/vi/ascii_D_last.out delete mode 100644 tests/files/vi/ascii_dd_first.out delete mode 100644 tests/files/vi/ascii_dd_last.out delete mode 100644 tests/files/vi/ascii_dw_first.out delete mode 100644 tests/files/vi/ascii_dw_last.out delete mode 100644 tests/files/vi/ascii_insert_after_w.out delete mode 100644 tests/files/vi/ascii_insert_eof.out delete mode 100644 tests/files/vi/ascii_insert_multi.out delete mode 100644 tests/files/vi/ascii_insert_multi_yy_push.out delete mode 100644 tests/files/vi/ascii_insert_sof.out delete mode 100644 tests/files/vi/ascii_yw_push.out delete mode 100644 tests/files/vi/dd_first.in delete mode 100644 tests/files/vi/dd_last.in delete mode 100644 tests/files/vi/dw_first.in delete mode 100644 tests/files/vi/dw_last.in delete mode 100644 tests/files/vi/insert_after_w.in delete mode 100644 tests/files/vi/insert_eof.in delete mode 100644 tests/files/vi/insert_multi.in delete mode 100644 tests/files/vi/insert_multi_yy_push.in delete mode 100644 tests/files/vi/insert_sof.in delete mode 100644 tests/files/vi/yw_push.in diff --git a/tests/files/vi/D_first.in b/tests/files/vi/D_first.in deleted file mode 100644 index 0e3ce347..00000000 --- a/tests/files/vi/D_first.in +++ /dev/null @@ -1,3 +0,0 @@ -D -:wq - diff --git a/tests/files/vi/D_last.in b/tests/files/vi/D_last.in deleted file mode 100644 index 355c8c4f..00000000 --- a/tests/files/vi/D_last.in +++ /dev/null @@ -1,4 +0,0 @@ -G -D -:wq - diff --git a/tests/files/vi/ascii.txt b/tests/files/vi/ascii.txt deleted file mode 100644 index ee9f73ba..00000000 --- a/tests/files/vi/ascii.txt +++ /dev/null @@ -1,4 +0,0 @@ -abc def hij -klm nop qrs -tuv wxy z - diff --git a/tests/files/vi/ascii_D_first.out b/tests/files/vi/ascii_D_first.out deleted file mode 100644 index 83a48a25..00000000 --- a/tests/files/vi/ascii_D_first.out +++ /dev/null @@ -1,4 +0,0 @@ - -klm nop qrs -tuv wxy z - diff --git a/tests/files/vi/ascii_D_last.out b/tests/files/vi/ascii_D_last.out deleted file mode 100644 index ee9f73ba..00000000 --- a/tests/files/vi/ascii_D_last.out +++ /dev/null @@ -1,4 +0,0 @@ -abc def hij -klm nop qrs -tuv wxy z - diff --git a/tests/files/vi/ascii_dd_first.out b/tests/files/vi/ascii_dd_first.out deleted file mode 100644 index 3361750a..00000000 --- a/tests/files/vi/ascii_dd_first.out +++ /dev/null @@ -1,3 +0,0 @@ -klm nop qrs -tuv wxy z - diff --git a/tests/files/vi/ascii_dd_last.out b/tests/files/vi/ascii_dd_last.out deleted file mode 100644 index dd43ed6d..00000000 --- a/tests/files/vi/ascii_dd_last.out +++ /dev/null @@ -1,3 +0,0 @@ -abc def hij -klm nop qrs -tuv wxy z diff --git a/tests/files/vi/ascii_dw_first.out b/tests/files/vi/ascii_dw_first.out deleted file mode 100644 index 400e1cb1..00000000 --- a/tests/files/vi/ascii_dw_first.out +++ /dev/null @@ -1,4 +0,0 @@ -def hij -klm nop qrs -tuv wxy z - diff --git a/tests/files/vi/ascii_dw_last.out b/tests/files/vi/ascii_dw_last.out deleted file mode 100644 index 7a965051..00000000 --- a/tests/files/vi/ascii_dw_last.out +++ /dev/null @@ -1,4 +0,0 @@ -abc def hij -klm nop qrs -tuv wxy - diff --git a/tests/files/vi/ascii_insert_after_w.out b/tests/files/vi/ascii_insert_after_w.out deleted file mode 100644 index 88886fc7..00000000 --- a/tests/files/vi/ascii_insert_after_w.out +++ /dev/null @@ -1,4 +0,0 @@ -abc hellodef hij -klm nop qrs -tuv wxy z - diff --git a/tests/files/vi/ascii_insert_eof.out b/tests/files/vi/ascii_insert_eof.out deleted file mode 100644 index deb55c1d..00000000 --- a/tests/files/vi/ascii_insert_eof.out +++ /dev/null @@ -1,4 +0,0 @@ -abc def hij -klm nop qrs -tuv wxy z -hello diff --git a/tests/files/vi/ascii_insert_multi.out b/tests/files/vi/ascii_insert_multi.out deleted file mode 100644 index 85591656..00000000 --- a/tests/files/vi/ascii_insert_multi.out +++ /dev/null @@ -1,4 +0,0 @@ -abcdef abc def hij -klm nop qrs -tuv wxy z - diff --git a/tests/files/vi/ascii_insert_multi_yy_push.out b/tests/files/vi/ascii_insert_multi_yy_push.out deleted file mode 100644 index 6e01b0b2..00000000 --- a/tests/files/vi/ascii_insert_multi_yy_push.out +++ /dev/null @@ -1,5 +0,0 @@ -abcdef abc def hij -klm nop qrs -abcdef abc def hij -tuv wxy z - diff --git a/tests/files/vi/ascii_insert_sof.out b/tests/files/vi/ascii_insert_sof.out deleted file mode 100644 index 9eca6509..00000000 --- a/tests/files/vi/ascii_insert_sof.out +++ /dev/null @@ -1,4 +0,0 @@ -helloabc def hij -klm nop qrs -tuv wxy z - diff --git a/tests/files/vi/ascii_yw_push.out b/tests/files/vi/ascii_yw_push.out deleted file mode 100644 index 435531a6..00000000 --- a/tests/files/vi/ascii_yw_push.out +++ /dev/null @@ -1,4 +0,0 @@ -abc def hijdef -klm nop qrs -tuv wxy z - diff --git a/tests/files/vi/dd_first.in b/tests/files/vi/dd_first.in deleted file mode 100644 index e1a138b8..00000000 --- a/tests/files/vi/dd_first.in +++ /dev/null @@ -1,3 +0,0 @@ -dd -:wq - diff --git a/tests/files/vi/dd_last.in b/tests/files/vi/dd_last.in deleted file mode 100644 index 821e7bf4..00000000 --- a/tests/files/vi/dd_last.in +++ /dev/null @@ -1,4 +0,0 @@ -G -dd -:wq - diff --git a/tests/files/vi/dw_first.in b/tests/files/vi/dw_first.in deleted file mode 100644 index 919e2aad..00000000 --- a/tests/files/vi/dw_first.in +++ /dev/null @@ -1,3 +0,0 @@ -dw -:wq - diff --git a/tests/files/vi/dw_last.in b/tests/files/vi/dw_last.in deleted file mode 100644 index 76495036..00000000 --- a/tests/files/vi/dw_last.in +++ /dev/null @@ -1,3 +0,0 @@ -G$bdw -:wq - diff --git a/tests/files/vi/insert_after_w.in b/tests/files/vi/insert_after_w.in deleted file mode 100644 index 232b631e..00000000 --- a/tests/files/vi/insert_after_w.in +++ /dev/null @@ -1,2 +0,0 @@ -wihello -:wq diff --git a/tests/files/vi/insert_eof.in b/tests/files/vi/insert_eof.in deleted file mode 100644 index b2e18d3c..00000000 --- a/tests/files/vi/insert_eof.in +++ /dev/null @@ -1,2 +0,0 @@ -G$ihello -:wq diff --git a/tests/files/vi/insert_multi.in b/tests/files/vi/insert_multi.in deleted file mode 100644 index cd6a4239..00000000 --- a/tests/files/vi/insert_multi.in +++ /dev/null @@ -1,2 +0,0 @@ -iab icd ief :wq - diff --git a/tests/files/vi/insert_multi_yy_push.in b/tests/files/vi/insert_multi_yy_push.in deleted file mode 100644 index 65134bd8..00000000 --- a/tests/files/vi/insert_multi_yy_push.in +++ /dev/null @@ -1,2 +0,0 @@ -iab icd ief yyjp:wq - diff --git a/tests/files/vi/insert_sof.in b/tests/files/vi/insert_sof.in deleted file mode 100644 index b91b2c1b..00000000 --- a/tests/files/vi/insert_sof.in +++ /dev/null @@ -1,2 +0,0 @@ -ihello -:wq diff --git a/tests/files/vi/yw_push.in b/tests/files/vi/yw_push.in deleted file mode 100644 index a653ec32..00000000 --- a/tests/files/vi/yw_push.in +++ /dev/null @@ -1,3 +0,0 @@ -wyw2ep -:wq - diff --git a/tests/vi.test b/tests/vi.test index 4e84ea4c..733feba8 100644 --- a/tests/vi.test +++ b/tests/vi.test @@ -2,135 +2,30 @@ [ -f testing.sh ] && . testing.sh -# setup -cp $FILES/vi/ascii.txt in.txt -cp $FILES/vi/dd_first.in cmd.txt -cp $FILES/vi/ascii_dd_first.out out.txt +vitest() { + script="$2:wq\n" + testcmd "$1" "-s /dev/stdin input 1>/dev/null 2>/dev/null && cat input" "$4" "$3" "$script" +} -toyonly testing "dd first line ascii" \ - "vi -s cmd.txt in.txt 1>/dev/null 2>/dev/null && cmp in.txt out.txt && echo yes" "yes\n" "" "" +vitest "w movement" "wxwx" "abc def ghi" "abc ef hi" +vitest "e movement" "exex" "abc def ghi" "ab de ghi" +# TODO vitest "b movement" '$bxbx' "abc def ghi" "abc ef hi" -# teardown -rm in.txt cmd.txt out.txt +vitest "dd first line ascii" "dd" "abc def\nghi jkl\n" "ghi jkl\n" +# TODO vitest "dd last line ascii" "Gdd" "abc def\nghi jkl" "abc def\n" -# setup -cp $FILES/vi/ascii.txt in.txt -cp $FILES/vi/dd_last.in cmd.txt -cp $FILES/vi/ascii_dd_last.out out.txt +vitest "dw first line ascii" "dw" "abc def\nghi" "def\nghi" +# TODO vitest "dw last line ascii" 'G$bdw' "abc def\nghi jkl\n" "abc def\nghi \n" -toyonly testing "dd last line ascii" \ - "vi -s cmd.txt in.txt 1>/dev/null 2>/dev/null && cmp in.txt out.txt && echo yes" "yes\n" "" "" +vitest "D first line ascii" "llD" "abc def\nghi jkl" "ab\nghi jkl" +# TODO vitest "D last line ascii" "GD" "abc def\nghi jkl" "abc def\n" -# teardown -rm in.txt cmd.txt out.txt +vitest "yw push ascii" "wyw2ep" "abc def ghi\n" "abc def ghidef \n" -# setup -cp $FILES/vi/ascii.txt in.txt -cp $FILES/vi/dw_last.in cmd.txt -cp $FILES/vi/ascii_dw_last.out out.txt +vitest "insert start of file ascii" "ihello\x1b" "abc def" "helloabc def" +# TODO vitest "insert end of file ascii" "GAhello\x1b" "abc\ndef" "abc\ndefhello" -toyonly testing "dw last line ascii" \ - "vi -s cmd.txt in.txt 1>/dev/null 2>/dev/null && cmp in.txt out.txt && echo yes" "yes\n" "" "" - -# teardown -rm in.txt cmd.txt out.txt - -# setup -cp $FILES/vi/ascii.txt in.txt -cp $FILES/vi/dw_first.in cmd.txt -cp $FILES/vi/ascii_dw_first.out out.txt - -toyonly testing "dw first line ascii" \ - "vi -s cmd.txt in.txt 1>/dev/null 2>/dev/null && cmp in.txt out.txt && echo yes" "yes\n" "" "" - -# teardown -rm in.txt cmd.txt out.txt - -# setup -cp $FILES/vi/ascii.txt in.txt -cp $FILES/vi/D_first.in cmd.txt -cp $FILES/vi/ascii_D_first.out out.txt - -toyonly testing "D first line ascii" \ - "vi -s cmd.txt in.txt 1>/dev/null 2>/dev/null && cmp in.txt out.txt && echo yes" "yes\n" "" "" - -# teardown -rm in.txt cmd.txt out.txt - -# setup -cp $FILES/vi/ascii.txt in.txt -cp $FILES/vi/D_last.in cmd.txt -cp $FILES/vi/ascii_D_last.out out.txt - -toyonly testing "D last line ascii" \ - "vi -s cmd.txt in.txt 1>/dev/null 2>/dev/null && cmp in.txt out.txt && echo yes" "yes\n" "" "" - -# teardown -rm in.txt cmd.txt out.txt - -# setup -cp $FILES/vi/ascii.txt in.txt -cp $FILES/vi/yw_push.in cmd.txt -cp $FILES/vi/ascii_yw_push.out out.txt - -toyonly testing "yw push ascii" \ - "vi -s cmd.txt in.txt 1>/dev/null 2>/dev/null && cmp in.txt out.txt && echo yes" "yes\n" "" "" - -# teardown -rm in.txt cmd.txt out.txt - -# setup -cp $FILES/vi/ascii.txt in.txt -cp $FILES/vi/insert_sof.in cmd.txt -cp $FILES/vi/ascii_insert_sof.out out.txt - -toyonly testing "insert start of file ascii" \ - "vi -s cmd.txt in.txt 1>/dev/null 2>/dev/null && cmp in.txt out.txt && echo yes" "yes\n" "" "" - -# teardown -rm in.txt cmd.txt out.txt - -# setup -cp $FILES/vi/ascii.txt in.txt -cp $FILES/vi/insert_eof.in cmd.txt -cp $FILES/vi/ascii_insert_eof.out out.txt - -toyonly testing "insert end of file ascii" \ - "vi -s cmd.txt in.txt 1>/dev/null 2>/dev/null && cmp in.txt out.txt && echo yes" "yes\n" "" "" - -# teardown -rm in.txt cmd.txt out.txt - -# setup -cp $FILES/vi/ascii.txt in.txt -cp $FILES/vi/insert_after_w.in cmd.txt -cp $FILES/vi/ascii_insert_after_w.out out.txt - -toyonly testing "insert after first word ascii" \ - "vi -s cmd.txt in.txt 1>/dev/null 2>/dev/null && cmp in.txt out.txt && echo yes" "yes\n" "" "" - -# teardown -rm in.txt cmd.txt out.txt - -# setup -cp $FILES/vi/ascii.txt in.txt -cp $FILES/vi/insert_multi.in cmd.txt -cp $FILES/vi/ascii_insert_multi.out out.txt - -toyonly testing "insert multiple times ascii" \ - "vi -s cmd.txt in.txt 1>/dev/null 2>/dev/null && cmp in.txt out.txt && echo yes" "yes\n" "" "" - -# teardown -rm in.txt cmd.txt out.txt - -# setup -cp $FILES/vi/ascii.txt in.txt -cp $FILES/vi/insert_multi_yy_push.in cmd.txt -cp $FILES/vi/ascii_insert_multi_yy_push.out out.txt - -toyonly testing "insert multi yank move and push ascii" \ - "vi -s cmd.txt in.txt 1>/dev/null 2>/dev/null && cmp in.txt out.txt && echo yes" "yes\n" "" "" - -# teardown -rm in.txt cmd.txt out.txt +vitest "insert multiple times ascii" "iab\x1bicd\x1bief\x1b" "xyz" "acefdbxyz" +vitest "insert multi yank move and push ascii" "ixyz\x1byyjp" \ + "abc def\nghi jkl\nmno pqr\n" "xyzabc def\nghi jkl\nxyzabc def\nmno pqr\n" -- 2.39.2