diff options
author | David Bürgin <676c7473@gmail.com> | 2015-05-01 18:55:55 +0200 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2015-05-25 16:29:01 -0400 |
commit | e4c3ac1f82ea69777e1dcbfeb18a42c572c54d8f (patch) | |
tree | e9b0aba5a26f1cf543ba266aabd9edb0911d7c54 | |
parent | 44175224ccc75e8feaf2fab594abf957024f79b8 (diff) | |
download | rneovim-e4c3ac1f82ea69777e1dcbfeb18a42c572c54d8f.tar.gz rneovim-e4c3ac1f82ea69777e1dcbfeb18a42c572c54d8f.tar.bz2 rneovim-e4c3ac1f82ea69777e1dcbfeb18a42c572c54d8f.zip |
tests: Convert legacy test29
-rw-r--r-- | src/nvim/testdir/Makefile | 2 | ||||
-rw-r--r-- | src/nvim/testdir/test29.in | 229 | ||||
-rw-r--r-- | src/nvim/testdir/test29.ok | 97 | ||||
-rw-r--r-- | test/functional/legacy/029_join_spec.lua | 337 |
4 files changed, 338 insertions, 327 deletions
diff --git a/src/nvim/testdir/Makefile b/src/nvim/testdir/Makefile index 6ff3763fd4..f22cb79748 100644 --- a/src/nvim/testdir/Makefile +++ b/src/nvim/testdir/Makefile @@ -14,7 +14,7 @@ SCRIPTS := test_autoformat_join.out \ test11.out test12.out test13.out test14.out \ test17.out \ test24.out \ - test26.out test27.out test29.out test30.out \ + test26.out test27.out test30.out \ test32.out test34.out \ test36.out test37.out test39.out test40.out \ test42.out test43.out test45.out \ diff --git a/src/nvim/testdir/test29.in b/src/nvim/testdir/test29.in deleted file mode 100644 index 4cc2120814..0000000000 --- a/src/nvim/testdir/test29.in +++ /dev/null @@ -1,229 +0,0 @@ -Test for joining lines and marks in them - in compatible and nocompatible modes - and with 'joinspaces' set or not - and with 'cpoptions' flag 'j' set or not - -STARTTEST -:so small.vim -:set nojoinspaces -:set cpoptions-=j -/firstline/ -j"td/^STARTTEST/-1 -PJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j -j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces -j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j -j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpo+=qo -j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjd/STARTTEST/-2 -ENDTEST - -firstline -asdfasdf. -asdf -asdfasdf. -asdf -asdfasdf. -asdf -asdfasdf. -asdf -asdfasdf. -asdf -asdfasdf. -asdf -asdfasdf. -asdf -asdfasdf -asdf -asdfasdf -asdf -asdfasdf -asdf -asdfasdf -asdf -asdfasdf -asdf -asdfasdf -asdf -asdfasdf -asdf -zx cvn. -as dfg? -hjkl iop! -ert -zx cvn. -as dfg? -hjkl iop! -ert - -STARTTEST -/^{/+1 -:set comments=s1:/*,mb:*,ex:*/,:// -:set nojoinspaces fo=j -:set backspace=eol,start -:.,+3join -j4J -:.,+2join -j3J -:.,+2join -j3J -:.,+2join -jj3J -ENDTEST - -{ - -/* - * Make sure the previous comment leader is not removed. - */ - -/* - * Make sure the previous comment leader is not removed. - */ - -// Should the next comment leader be left alone? -// Yes. - -// Should the next comment leader be left alone? -// Yes. - -/* Here the comment leader should be left intact. */ -// And so should this one. - -/* Here the comment leader should be left intact. */ -// And so should this one. - -if (condition) // Remove the next comment leader! - // OK, I will. - action(); - -if (condition) // Remove the next comment leader! - // OK, I will. - action(); -} - -STARTTEST -:" Test with backspace set to the non-compatible setting -/^\d\+ this -:set bs=2 -Avim1 -Avim2u -:set cpo-=< -:inoremap <c-u> <left><c-u> -Avim3 -:iunmap <c-u> -Avim4 -:" Test with backspace set to the compatible setting -:set bs= -A vim5A -A vim6Azweiu -:inoremap <c-u> <left><c-u> -A vim7 -:set noesckeys -ENDTEST -1 this shouldn't be deleted -2 this shouldn't be deleted -3 this shouldn't be deleted -4 this should be deleted -5 this shouldn't be deleted -6 this shouldn't be deleted -7 this shouldn't be deleted -8 this shouldn't be deleted (not touched yet) - -STARTTEST -/^{/+1 -:set comments=sO:*\ -,mO:*\ \ ,exO:*/ -:set comments+=s1:/*,mb:*,ex:*/,:// -:set comments+=s1:>#,mb:#,ex:#<,:< -:set cpoptions-=j joinspaces fo=j -:set backspace=eol,start -:.,+3join -j4J -:.,+8join -j9J -:.,+2join -j3J -:.,+2join -j3J -:.,+2join -jj3J -j:.,+2join -jj3J -j:.,+5join -j6J -oSome code!
// Make sure backspacing does not remove this comment leader.0i -ENDTEST - -{ - -/* - * Make sure the previous comment leader is not removed. - */ - -/* - * Make sure the previous comment leader is not removed. - */ - -/* List: - * - item1 - * foo bar baz - * foo bar baz - * - item2 - * foo bar baz - * foo bar baz - */ - -/* List: - * - item1 - * foo bar baz - * foo bar baz - * - item2 - * foo bar baz - * foo bar baz - */ - -// Should the next comment leader be left alone? -// Yes. - -// Should the next comment leader be left alone? -// Yes. - -/* Here the comment leader should be left intact. */ -// And so should this one. - -/* Here the comment leader should be left intact. */ -// And so should this one. - -if (condition) // Remove the next comment leader! - // OK, I will. - action(); - -if (condition) // Remove the next comment leader! - // OK, I will. - action(); - -int i = 7 /* foo *// 3 - // comment - ; - -int i = 7 /* foo *// 3 - // comment - ; - -># Note that the last character of the ending comment leader (left angle - # bracket) is a comment leader itself. Make sure that this comment leader is - # not removed from the next line #< -< On this line a new comment is opened which spans 2 lines. This comment should -< retain its comment leader. - -># Note that the last character of the ending comment leader (left angle - # bracket) is a comment leader itself. Make sure that this comment leader is - # not removed from the next line #< -< On this line a new comment is opened which spans 2 lines. This comment should -< retain its comment leader. - -} - -STARTTEST -:g/^STARTTEST/.,/^ENDTEST/d -:?firstline?+1,$w! test.out -:qa! -ENDTEST diff --git a/src/nvim/testdir/test29.ok b/src/nvim/testdir/test29.ok deleted file mode 100644 index 9dc07ed46b..0000000000 --- a/src/nvim/testdir/test29.ok +++ /dev/null @@ -1,97 +0,0 @@ -asdfasdf. asdf -asdfasdf. asdf -asdfasdf. asdf -asdfasdf. asdf -asdfasdf. asdf -asdfasdf. asdf -asdfasdf. asdf -asdfasdf asdf -asdfasdf asdf -asdfasdf asdf -asdfasdf asdf -asdfasdf asdf -asdfasdf asdf -asdfasdf asdf -zx cvn. as dfg? hjkl iop! ert ernop -zx cvn. as dfg? hjkl iop! ert ernop - -asdfasdf. asdf -asdfasdf. asdf -asdfasdf. asdf -asdfasdf. asdf -asdfasdf. asdf -asdfasdf. asdf -asdfasdf. asdf -asdfasdf asdf -asdfasdf asdf -asdfasdf asdf -asdfasdf asdf -asdfasdf asdf -asdfasdf asdf -asdfasdf asdf -zx cvn. as dfg? hjkl iop! ert enop -zx cvn. as dfg? hjkl iop! ert ernop - -asdfasdf. asdf -asdfasdf. asdf -asdfasdf. asdf -asdfasdf. asdf -asdfasdf. asdf -asdfasdf. asdf -asdfasdf. asdf -asdfasdf asdf -asdfasdf asdf -asdfasdf asdf -asdfasdf asdf -asdfasdf asdf -asdfasdf asdf -asdfasdf asdf -zx cvn. as dfg? hjkl iop! ert a - - -{ -/* Make sure the previous comment leader is not removed. */ -/* Make sure the previous comment leader is not removed. */ -// Should the next comment leader be left alone? Yes. -// Should the next comment leader be left alone? Yes. -/* Here the comment leader should be left intact. */ // And so should this one. -/* Here the comment leader should be left intact. */ // And so should this one. -if (condition) // Remove the next comment leader! OK, I will. - action(); -if (condition) // Remove the next comment leader! OK, I will. - action(); -} - -1 this shouldn't be deleted -2 this shouldn't be deleted -3 this shouldn't be deleted -4 this should be deleted3 - -6 this shouldn't be deleted vim5 -7 this shouldn't be deleted vim6 -8 this shouldn't be deleted (not touched yet) vim7 - - -{ -/* Make sure the previous comment leader is not removed. */ -/* Make sure the previous comment leader is not removed. */ -/* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */ -/* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */ -// Should the next comment leader be left alone? Yes. -// Should the next comment leader be left alone? Yes. -/* Here the comment leader should be left intact. */ // And so should this one. -/* Here the comment leader should be left intact. */ // And so should this one. -if (condition) // Remove the next comment leader! OK, I will. - action(); -if (condition) // Remove the next comment leader! OK, I will. - action(); -int i = 7 /* foo *// 3 // comment - ; -int i = 7 /* foo *// 3 // comment - ; -># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader. -># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader. - -Some code!// Make sure backspacing does not remove this comment leader. -} - diff --git a/test/functional/legacy/029_join_spec.lua b/test/functional/legacy/029_join_spec.lua new file mode 100644 index 0000000000..eafa50d88c --- /dev/null +++ b/test/functional/legacy/029_join_spec.lua @@ -0,0 +1,337 @@ +-- Test for joining lines with marks in them (and with 'joinspaces' set/reset) + +local helpers = require('test.functional.helpers') +local feed, insert, source = helpers.feed, helpers.insert, helpers.source +local clear, execute, expect = helpers.clear, helpers.execute, helpers.expect + +describe('joining lines', function() + before_each(clear) + + it("keeps marks with different 'joinspaces' settings", function() + insert([[ + firstline + asdfasdf. + asdf + asdfasdf. + asdf + asdfasdf. + asdf + asdfasdf. + asdf + asdfasdf. + asdf + asdfasdf. + asdf + asdfasdf. + asdf + asdfasdf + asdf + asdfasdf + asdf + asdfasdf + asdf + asdfasdf + asdf + asdfasdf + asdf + asdfasdf + asdf + asdfasdf + asdf + zx cvn. + as dfg? + hjkl iop! + ert + ]]) + + -- Switch off 'joinspaces', then join some lines in the buffer using "J". + -- Also set a few marks and record their movement when joining lines. + execute('set nojoinspaces') + execute('/firstline/') + feed('j"td/^$/<cr>') + feed('PJjJjJjJjJjJjJjJjJjJjJjJjJjJ') + feed('j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p') + + -- Do the same with 'joinspaces' on. + execute('set joinspaces') + feed('j"tp') + feed('JjJjJjJjJjJjJjJjJjJjJjJjJjJ') + feed('j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$po<esc>') + + execute('1d') + + expect([[ + asdfasdf. asdf + asdfasdf. asdf + asdfasdf. asdf + asdfasdf. asdf + asdfasdf. asdf + asdfasdf. asdf + asdfasdf. asdf + asdfasdf asdf + asdfasdf asdf + asdfasdf asdf + asdfasdf asdf + asdfasdf asdf + asdfasdf asdf + asdfasdf asdf + zx cvn. as dfg? hjkl iop! ert ernop + + asdfasdf. asdf + asdfasdf. asdf + asdfasdf. asdf + asdfasdf. asdf + asdfasdf. asdf + asdfasdf. asdf + asdfasdf. asdf + asdfasdf asdf + asdfasdf asdf + asdfasdf asdf + asdfasdf asdf + asdfasdf asdf + asdfasdf asdf + asdfasdf asdf + zx cvn. as dfg? hjkl iop! ert enop + ]]) + end) + + it("removes comment leaders with 'joinspaces' off", function() + insert([[ + { + + /* + * Make sure the previous comment leader is not removed. + */ + + /* + * Make sure the previous comment leader is not removed. + */ + + // Should the next comment leader be left alone? + // Yes. + + // Should the next comment leader be left alone? + // Yes. + + /* Here the comment leader should be left intact. */ + // And so should this one. + + /* Here the comment leader should be left intact. */ + // And so should this one. + + if (condition) // Remove the next comment leader! + // OK, I will. + action(); + + if (condition) // Remove the next comment leader! + // OK, I will. + action(); + } + ]]) + + execute('/^{/+1') + execute('set comments=s1:/*,mb:*,ex:*/,://') + execute('set nojoinspaces') + execute('set backspace=eol,start') + + -- With 'joinspaces' switched off, join lines using both "J" and :join and + -- verify that comment leaders are stripped or kept as appropriate. + execute('.,+3join') + feed('j4J<cr>') + execute('.,+2join') + feed('j3J<cr>') + execute('.,+2join') + feed('j3J<cr>') + execute('.,+2join') + feed('jj3J<cr>') + + expect([[ + { + /* Make sure the previous comment leader is not removed. */ + /* Make sure the previous comment leader is not removed. */ + // Should the next comment leader be left alone? Yes. + // Should the next comment leader be left alone? Yes. + /* Here the comment leader should be left intact. */ // And so should this one. + /* Here the comment leader should be left intact. */ // And so should this one. + if (condition) // Remove the next comment leader! OK, I will. + action(); + if (condition) // Remove the next comment leader! OK, I will. + action(); + } + ]]) + end) + + -- This test case has nothing to do with joining lines. + it("Ctrl-u and 'backspace' compatibility", function() + -- Notice that the buffer text, which is intended to helpfully hint at + -- what's being done in the test, is off by one line. (For example, "this + -- should be deleted" should not be deleted, but the line below it should, + -- and is.) This is likely a mistake, but was kept here for consistency. + insert([[ + 1 this shouldn't be deleted + 2 this shouldn't be deleted + 3 this shouldn't be deleted + 4 this should be deleted + 5 this shouldn't be deleted + 6 this shouldn't be deleted + 7 this shouldn't be deleted + 8 this shouldn't be deleted (not touched yet) + ]]) + + -- As mentioned above, we mimic the wrong initial cursor position in the old + -- test by advancing one line further. + execute([[/^\d\+ this]], '+1') + + -- Test with the default 'backspace' setting. + feed('Avim1<c-u><esc><cr>') + feed('Avim2<c-g>u<c-u><esc><cr>') + execute('set cpo-=<') + execute('inoremap <c-u> <left><c-u>') + feed('Avim3<c-u><esc><cr>') + execute('iunmap <c-u>') + feed('Avim4<c-u><c-u><esc><cr>') + + -- Test with 'backspace' set to the compatible setting. + execute('set backspace=') + feed('A vim5<esc>A<c-u><c-u><esc><cr>') + feed('A vim6<esc>Azwei<c-g>u<c-u><esc><cr>') + execute('inoremap <c-u> <left><c-u>') + feed('A vim7<c-u><c-u><esc><cr>') + + expect([[ + 1 this shouldn't be deleted + 2 this shouldn't be deleted + 3 this shouldn't be deleted + 4 this should be deleted3 + + 6 this shouldn't be deleted vim5 + 7 this shouldn't be deleted vim6 + 8 this shouldn't be deleted (not touched yet) vim7 + ]]) + end) + + it("removes comment leaders with 'joinspaces' on", function() + insert([[ + { + + /* + * Make sure the previous comment leader is not removed. + */ + + /* + * Make sure the previous comment leader is not removed. + */ + + /* List: + * - item1 + * foo bar baz + * foo bar baz + * - item2 + * foo bar baz + * foo bar baz + */ + + /* List: + * - item1 + * foo bar baz + * foo bar baz + * - item2 + * foo bar baz + * foo bar baz + */ + + // Should the next comment leader be left alone? + // Yes. + + // Should the next comment leader be left alone? + // Yes. + + /* Here the comment leader should be left intact. */ + // And so should this one. + + /* Here the comment leader should be left intact. */ + // And so should this one. + + if (condition) // Remove the next comment leader! + // OK, I will. + action(); + + if (condition) // Remove the next comment leader! + // OK, I will. + action(); + + int i = 7 /* foo *// 3 + // comment + ; + + int i = 7 /* foo *// 3 + // comment + ; + + ># Note that the last character of the ending comment leader (left angle + # bracket) is a comment leader itself. Make sure that this comment leader is + # not removed from the next line #< + < On this line a new comment is opened which spans 2 lines. This comment should + < retain its comment leader. + + ># Note that the last character of the ending comment leader (left angle + # bracket) is a comment leader itself. Make sure that this comment leader is + # not removed from the next line #< + < On this line a new comment is opened which spans 2 lines. This comment should + < retain its comment leader. + + } + ]]) + + execute('/^{/+1') + execute([[set comments=sO:*\ -,mO:*\ \ ,exO:*/]]) + execute('set comments+=s1:/*,mb:*,ex:*/,://') + execute('set comments+=s1:>#,mb:#,ex:#<,:<') + execute('set backspace=eol,start') + + -- With 'joinspaces' on (the default setting), again join lines and verify + -- that comment leaders are stripped or kept as appropriate. + execute('.,+3join') + feed('j4J<cr>') + execute('.,+8join') + feed('j9J<cr>') + execute('.,+2join') + feed('j3J<cr>') + execute('.,+2join') + feed('j3J<cr>') + execute('.,+2join') + feed('jj3J<cr>') + feed('j') + execute('.,+2join') + feed('jj3J<cr>') + feed('j') + execute('.,+5join') + feed('j6J<cr>') + feed('oSome code!<cr>// Make sure backspacing does not remove this comment leader.<esc>0i<bs><esc>') + + expect([[ + { + /* Make sure the previous comment leader is not removed. */ + /* Make sure the previous comment leader is not removed. */ + /* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */ + /* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */ + // Should the next comment leader be left alone? Yes. + // Should the next comment leader be left alone? Yes. + /* Here the comment leader should be left intact. */ // And so should this one. + /* Here the comment leader should be left intact. */ // And so should this one. + if (condition) // Remove the next comment leader! OK, I will. + action(); + if (condition) // Remove the next comment leader! OK, I will. + action(); + int i = 7 /* foo *// 3 // comment + ; + int i = 7 /* foo *// 3 // comment + ; + ># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader. + ># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader. + + Some code!// Make sure backspacing does not remove this comment leader. + } + ]]) + end) +end) |