diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-11-25 16:22:39 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-25 16:22:39 +0800 |
commit | 2efcb1a7e9a3d98c2bdacb769d094e4920149755 (patch) | |
tree | 532dc6005d9f54edd8234a47aff0798103cf3912 /test | |
parent | 7875e1377c24699a3773609996c4e21320a09f31 (diff) | |
parent | 84646b80f3adb14d8e7c052047e2cb30a16b1eca (diff) | |
download | rneovim-2efcb1a7e9a3d98c2bdacb769d094e4920149755.tar.gz rneovim-2efcb1a7e9a3d98c2bdacb769d094e4920149755.tar.bz2 rneovim-2efcb1a7e9a3d98c2bdacb769d094e4920149755.zip |
Merge pull request #21188 from zeertzjq/vim-8.2.2684
vim-patch:8.2.{2684,2713}: fold tests
Diffstat (limited to 'test')
-rw-r--r-- | test/functional/legacy/045_folding_spec.lua | 214 | ||||
-rw-r--r-- | test/functional/legacy/fold_spec.lua | 335 | ||||
-rw-r--r-- | test/functional/legacy/source_spec.lua | 31 | ||||
-rw-r--r-- | test/functional/ui/fold_spec.lua | 50 |
4 files changed, 369 insertions, 261 deletions
diff --git a/test/functional/legacy/045_folding_spec.lua b/test/functional/legacy/045_folding_spec.lua deleted file mode 100644 index 7d7856fd37..0000000000 --- a/test/functional/legacy/045_folding_spec.lua +++ /dev/null @@ -1,214 +0,0 @@ --- Tests for folding. -local Screen = require('test.functional.ui.screen') - -local helpers = require('test.functional.helpers')(after_each) -local feed, insert, feed_command, expect_any = - helpers.feed, helpers.insert, helpers.feed_command, helpers.expect_any - -describe('folding', function() - local screen - - before_each(function() - helpers.clear() - - screen = Screen.new(20, 8) - screen:attach() - end) - - it('creation, opening, moving (to the end) and closing', function() - insert([[ - 1 aa - 2 bb - 3 cc - last - ]]) - - -- Basic test if a fold can be created, opened, moving to the end and - -- closed. - feed_command('1') - feed('zf2j') - feed_command('call append("$", "manual " . getline(foldclosed(".")))') - feed('zo') - feed_command('call append("$", foldclosed("."))') - feed(']z') - feed_command('call append("$", getline("."))') - feed('zc') - feed_command('call append("$", getline(foldclosed(".")))') - - expect_any([[ - manual 1 aa - -1 - 3 cc - 1 aa]]) - end) - - it("foldmethod=marker", function() - screen:try_resize(20, 10) - insert([[ - dd {{{ - ee {{{ }}} - ff }}} - ]]) - feed_command('set fdm=marker fdl=1') - feed_command('2') - feed_command('call append("$", "line 2 foldlevel=" . foldlevel("."))') - feed('[z') - feed_command('call append("$", foldlevel("."))') - feed('jo{{ <esc>r{jj') -- writes '{{{' and moves 2 lines bot - feed_command('call append("$", foldlevel("."))') - feed('kYpj') - feed_command('call append("$", foldlevel("."))') - - helpers.poke_eventloop() - screen:expect([[ - dd {{{ | - ee {{{ }}} | - {{{ | - ff }}} | - ff }}} | - ^ | - line 2 foldlevel=2 | - 1 | - 1 | - | - ]]) - - end) - - it("foldmethod=indent", function() - screen:try_resize(20, 8) - feed_command('set fdm=indent sw=2') - insert([[ - aa - bb - cc - last - ]]) - feed_command('call append("$", "foldlevel line3=" . foldlevel(3))') - feed_command('call append("$", foldlevel(2))') - feed('zR') - - helpers.poke_eventloop() - screen:expect([[ - aa | - bb | - cc | - last | - ^ | - foldlevel line3=2 | - 1 | - | - ]]) - end) - - it("foldmethod=syntax", function() - screen:try_resize(35, 15) - insert([[ - 1 aa - 2 bb - 3 cc - 4 dd {{{ - 5 ee {{{ }}} - 6 ff }}} - 7 gg - 8 hh - 9 ii - a jj - b kk - last]]) - feed_command('set fdm=syntax fdl=0') - feed_command('syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3') - feed_command('syn region Fd1 start="ee" end="ff" fold contained') - feed_command('syn region Fd2 start="gg" end="hh" fold contained') - feed_command('syn region Fd3 start="commentstart" end="commentend" fold contained') - feed('Gzk') - feed_command('call append("$", "folding " . getline("."))') - feed('k') - feed_command('call append("$", getline("."))') - feed('jAcommentstart <esc>Acommentend<esc>') - feed_command('set fdl=1') - feed('3j') - feed_command('call append("$", getline("."))') - feed_command('set fdl=0') - feed('zO<C-L>j') -- <C-L> redraws screen - feed_command('call append("$", getline("."))') - feed_command('set fdl=0') - expect_any([[ - folding 9 ii - 3 cc - 9 ii - a jj]]) - end) - - it("foldmethod=expression", function() - insert([[ - 1 aa - 2 bb - 3 cc - 4 dd {{{ - 5 ee {{{ }}} - 6 ff }}} - 7 gg - 8 hh - 9 ii - a jj - b kk - last ]]) - - feed_command([[ - fun Flvl() - let l = getline(v:lnum) - if l =~ "bb$" - return 2 - elseif l =~ "gg$" - return "s1" - elseif l =~ "ii$" - return ">2" - elseif l =~ "kk$" - return "0" - endif - return "=" - endfun - ]]) - feed_command('set fdm=expr fde=Flvl()') - feed_command('/bb$') - feed_command('call append("$", "expr " . foldlevel("."))') - feed_command('/hh$') - feed_command('call append("$", foldlevel("."))') - feed_command('/ii$') - feed_command('call append("$", foldlevel("."))') - feed_command('/kk$') - feed_command('call append("$", foldlevel("."))') - - expect_any([[ - expr 2 - 1 - 2 - 0]]) - end) - - it('can be opened after :move', function() - -- luacheck: ignore - screen:try_resize(35, 8) - insert([[ - Test fdm=indent and :move bug END - line2 - Test fdm=indent START - line3 - line4]]) - feed_command('set noai nosta ') - feed_command('set fdm=indent') - feed_command('1m1') - feed('2jzc') - feed_command('m0') - feed('zR') - - expect_any([[ - Test fdm=indent START - line3 - line4 - Test fdm=indent and :move bug END - line2]]) - end) -end) - diff --git a/test/functional/legacy/fold_spec.lua b/test/functional/legacy/fold_spec.lua new file mode 100644 index 0000000000..83513a3f94 --- /dev/null +++ b/test/functional/legacy/fold_spec.lua @@ -0,0 +1,335 @@ +-- Tests for folding. +local Screen = require('test.functional.ui.screen') + +local helpers = require('test.functional.helpers')(after_each) +local feed, insert, feed_command, expect_any = + helpers.feed, helpers.insert, helpers.feed_command, helpers.expect_any +local command = helpers.command +local exec = helpers.exec + +describe('folding', function() + local screen + + before_each(function() + helpers.clear() + + screen = Screen.new(45, 8) + screen:set_default_attr_ids({ + [1] = {bold = true, foreground = Screen.colors.Blue}, -- NonText + [2] = {foreground = Screen.colors.DarkBlue, background = Screen.colors.LightGrey}, -- Folded + [3] = {foreground = Screen.colors.DarkBlue, background = Screen.colors.Grey}, -- FoldColumn + [4] = {foreground = Screen.colors.Brown}, -- LineNr + }) + screen:attach() + end) + + it('creation, opening, moving (to the end) and closing', function() + insert([[ + 1 aa + 2 bb + 3 cc + last + ]]) + + -- Basic test if a fold can be created, opened, moving to the end and + -- closed. + feed_command('1') + feed('zf2j') + feed_command('call append("$", "manual " . getline(foldclosed(".")))') + feed('zo') + feed_command('call append("$", foldclosed("."))') + feed(']z') + feed_command('call append("$", getline("."))') + feed('zc') + feed_command('call append("$", getline(foldclosed(".")))') + + expect_any([[ + manual 1 aa + -1 + 3 cc + 1 aa]]) + end) + + it("foldmethod=marker", function() + screen:try_resize(20, 10) + insert([[ + dd {{{ + ee {{{ }}} + ff }}} + ]]) + feed_command('set fdm=marker fdl=1') + feed_command('2') + feed_command('call append("$", "line 2 foldlevel=" . foldlevel("."))') + feed('[z') + feed_command('call append("$", foldlevel("."))') + feed('jo{{ <esc>r{jj') -- writes '{{{' and moves 2 lines bot + feed_command('call append("$", foldlevel("."))') + feed('kYpj') + feed_command('call append("$", foldlevel("."))') + + helpers.poke_eventloop() + screen:expect([[ + dd {{{ | + ee {{{ }}} | + {{{ | + ff }}} | + ff }}} | + ^ | + line 2 foldlevel=2 | + 1 | + 1 | + | + ]]) + + end) + + it("foldmethod=indent", function() + screen:try_resize(20, 8) + feed_command('set fdm=indent sw=2') + insert([[ + aa + bb + cc + last + ]]) + feed_command('call append("$", "foldlevel line3=" . foldlevel(3))') + feed_command('call append("$", foldlevel(2))') + feed('zR') + + helpers.poke_eventloop() + screen:expect([[ + aa | + bb | + cc | + last | + ^ | + foldlevel line3=2 | + 1 | + | + ]]) + end) + + it("foldmethod=syntax", function() + screen:try_resize(35, 15) + insert([[ + 1 aa + 2 bb + 3 cc + 4 dd {{{ + 5 ee {{{ }}} + 6 ff }}} + 7 gg + 8 hh + 9 ii + a jj + b kk + last]]) + feed_command('set fdm=syntax fdl=0') + feed_command('syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3') + feed_command('syn region Fd1 start="ee" end="ff" fold contained') + feed_command('syn region Fd2 start="gg" end="hh" fold contained') + feed_command('syn region Fd3 start="commentstart" end="commentend" fold contained') + feed('Gzk') + feed_command('call append("$", "folding " . getline("."))') + feed('k') + feed_command('call append("$", getline("."))') + feed('jAcommentstart <esc>Acommentend<esc>') + feed_command('set fdl=1') + feed('3j') + feed_command('call append("$", getline("."))') + feed_command('set fdl=0') + feed('zO<C-L>j') -- <C-L> redraws screen + feed_command('call append("$", getline("."))') + feed_command('set fdl=0') + expect_any([[ + folding 9 ii + 3 cc + 9 ii + a jj]]) + end) + + it("foldmethod=expression", function() + insert([[ + 1 aa + 2 bb + 3 cc + 4 dd {{{ + 5 ee {{{ }}} + 6 ff }}} + 7 gg + 8 hh + 9 ii + a jj + b kk + last ]]) + + feed_command([[ + fun Flvl() + let l = getline(v:lnum) + if l =~ "bb$" + return 2 + elseif l =~ "gg$" + return "s1" + elseif l =~ "ii$" + return ">2" + elseif l =~ "kk$" + return "0" + endif + return "=" + endfun + ]]) + feed_command('set fdm=expr fde=Flvl()') + feed_command('/bb$') + feed_command('call append("$", "expr " . foldlevel("."))') + feed_command('/hh$') + feed_command('call append("$", foldlevel("."))') + feed_command('/ii$') + feed_command('call append("$", foldlevel("."))') + feed_command('/kk$') + feed_command('call append("$", foldlevel("."))') + + expect_any([[ + expr 2 + 1 + 2 + 0]]) + end) + + it('can be opened after :move', function() + -- luacheck: ignore + screen:try_resize(35, 8) + insert([[ + Test fdm=indent and :move bug END + line2 + Test fdm=indent START + line3 + line4]]) + feed_command('set noai nosta ') + feed_command('set fdm=indent') + feed_command('1m1') + feed('2jzc') + feed_command('m0') + feed('zR') + + expect_any([[ + Test fdm=indent START + line3 + line4 + Test fdm=indent and :move bug END + line2]]) + end) + + -- oldtest: Test_folds_with_rnu() + it('with relative line numbers', function() + command('set fdm=marker rnu foldcolumn=2') + command('call setline(1, ["{{{1", "nline 1", "{{{1", "line 2"])') + + screen:expect([[ + {3:+ }{4: 0 }{2:^+-- 2 lines: ·························}| + {3:+ }{4: 1 }{2:+-- 2 lines: ·························}| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + | + ]]) + feed("j") + screen:expect([[ + {3:+ }{4: 1 }{2:+-- 2 lines: ·························}| + {3:+ }{4: 0 }{2:^+-- 2 lines: ·························}| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + | + ]]) + end) + + -- oldtest: Test_foldclose_opt() + it('foldclose=all', function() + exec([[ + set foldmethod=manual foldclose=all foldopen=all + call setline(1, ['one', 'two', 'three', 'four']) + 2,3fold + ]]) + + screen:expect([[ + ^one | + {2:+-- 2 lines: two····························}| + four | + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + | + ]]) + feed('2G') + screen:expect([[ + one | + ^two | + three | + four | + {1:~ }| + {1:~ }| + {1:~ }| + | + ]]) + feed('4G') + screen:expect([[ + one | + {2:+-- 2 lines: two····························}| + ^four | + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + | + ]]) + feed('3G') + screen:expect([[ + one | + two | + ^three | + four | + {1:~ }| + {1:~ }| + {1:~ }| + | + ]]) + feed('1G') + screen:expect([[ + ^one | + {2:+-- 2 lines: two····························}| + four | + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + | + ]]) + feed('2G') + screen:expect([[ + one | + ^two | + three | + four | + {1:~ }| + {1:~ }| + {1:~ }| + | + ]]) + feed('k') + screen:expect([[ + ^one | + {2:+-- 2 lines: two····························}| + four | + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + | + ]]) + end) +end) diff --git a/test/functional/legacy/source_spec.lua b/test/functional/legacy/source_spec.lua new file mode 100644 index 0000000000..02e6385247 --- /dev/null +++ b/test/functional/legacy/source_spec.lua @@ -0,0 +1,31 @@ +local helpers = require('test.functional.helpers')(after_each) +local Screen = require('test.functional.ui.screen') +local clear = helpers.clear +local feed = helpers.feed +local write_file = helpers.write_file + +before_each(clear) + +describe(':source!', function() + it('gives E22 when scripts nested too deep', function() + write_file('Xscript.vim', [[ + :source! Xscript.vim + ]]) + local screen = Screen.new(75, 6) + screen:set_default_attr_ids({ + [0] = {bold = true, foreground = Screen.colors.Blue}, -- NonText + [1] = {background = Screen.colors.Red, foreground = Screen.colors.White}, -- ErrorMsg + }) + screen:attach() + feed(':source! Xscript.vim\n') + screen:expect([[ + ^ | + {0:~ }| + {0:~ }| + {0:~ }| + {0:~ }| + {1:E22: Scripts nested too deep} | + ]]) + os.remove('Xscript.vim') + end) +end) diff --git a/test/functional/ui/fold_spec.lua b/test/functional/ui/fold_spec.lua index 3c143d87ca..bfa7167100 100644 --- a/test/functional/ui/fold_spec.lua +++ b/test/functional/ui/fold_spec.lua @@ -7,7 +7,7 @@ local insert = helpers.insert local expect = helpers.expect local funcs = helpers.funcs local meths = helpers.meths -local source = helpers.source +local exec = helpers.exec local assert_alive = helpers.assert_alive @@ -199,50 +199,6 @@ describe("folded lines", function() end end) - it("highlighting with relative line numbers", function() - command("set relativenumber cursorline cursorlineopt=number foldmethod=marker") - feed_command("set foldcolumn=2") - funcs.setline(1, '{{{1') - funcs.setline(2, 'line 1') - funcs.setline(3, '{{{1') - funcs.setline(4, 'line 2') - feed("j") - if multigrid then - screen:expect([[ - ## grid 1 - [2:---------------------------------------------]| - [2:---------------------------------------------]| - [2:---------------------------------------------]| - [2:---------------------------------------------]| - [2:---------------------------------------------]| - [2:---------------------------------------------]| - [2:---------------------------------------------]| - [3:---------------------------------------------]| - ## grid 2 - {7:+ }{8: 1 }{5:+-- 2 lines: ·························}| - {7:+ }{9: 0 }{5:^+-- 2 lines: ·························}| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - ## grid 3 - :set foldcolumn=2 | - ]]) - else - screen:expect([[ - {7:+ }{8: 1 }{5:+-- 2 lines: ·························}| - {7:+ }{9: 0 }{5:^+-- 2 lines: ·························}| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - :set foldcolumn=2 | - ]]) - end - end) - it("work with spell", function() command("set spell") insert(content1) @@ -1714,7 +1670,7 @@ describe("folded lines", function() end) it('does not crash when foldtext is longer than columns #12988', function() - source([[ + exec([[ function! MyFoldText() abort return repeat('-', &columns + 100) endfunction @@ -1761,7 +1717,7 @@ describe("folded lines", function() it('work correctly with :move #18668', function() screen:try_resize(45, 12) - source([[ + exec([[ set foldmethod=expr foldexpr=indent(v:lnum) let content = ['', '', 'Line1', ' Line2', ' Line3', \ 'Line4', ' Line5', ' Line6', |