aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/functional/legacy/005_bufleave_delete_buffer_spec.lua (renamed from test/functional/legacy/005_bufleave_delete_buffer.lua)7
-rw-r--r--test/functional/legacy/015_alignment_spec.lua258
-rw-r--r--test/functional/legacy/051_highlight_spec.lua2
-rw-r--r--test/functional/legacy/077_mf_hash_grow_spec.lua45
-rw-r--r--test/functional/legacy/084_curswant_spec.lua48
-rw-r--r--test/functional/legacy/090_sha256_spec.lua64
-rw-r--r--test/functional/legacy/091_context_variables_spec.lua176
-rw-r--r--test/functional/legacy/095_regexp_multibyte_spec.lua270
-rw-r--r--test/functional/legacy/098_scrollbind_spec.lua48
-rw-r--r--test/functional/legacy/100_undo_level_spec.lua142
-rw-r--r--test/functional/legacy/103_visual_mode_reset_spec.lua47
-rw-r--r--test/functional/legacy/104_let_assignment_spec.lua (renamed from test/functional/legacy/104_let_assignment.lua)0
-rw-r--r--test/functional/legacy/107_adjust_window_and_contents_spec.lua2
-rw-r--r--test/functional/legacy/listlbr_utf8_spec.lua79
-rw-r--r--test/functional/legacy/qf_title_spec.lua30
-rw-r--r--test/functional/preload.lua5
-rw-r--r--test/functional/shell/viml_system_spec.lua12
-rw-r--r--test/functional/ui/highlight_spec.lua16
-rw-r--r--test/functional/ui/mouse_spec.lua34
-rw-r--r--test/functional/ui/screen.lua3
-rw-r--r--test/functional/ui/screen_basic_spec.lua42
-rw-r--r--test/functional/ui/sign_spec.lua2
-rw-r--r--test/functional/ui/wildmode_spec.lua2
-rw-r--r--test/unit/preload.lua7
24 files changed, 1278 insertions, 63 deletions
diff --git a/test/functional/legacy/005_bufleave_delete_buffer.lua b/test/functional/legacy/005_bufleave_delete_buffer_spec.lua
index e8459ad4a7..e6989a6674 100644
--- a/test/functional/legacy/005_bufleave_delete_buffer.lua
+++ b/test/functional/legacy/005_bufleave_delete_buffer_spec.lua
@@ -38,18 +38,15 @@ describe('test5', function()
-- Write current file contents.
execute('?start?,$yank A')
- -- Delete alternate buffer.
- execute('bwipe test.out')
- execute('au bufleave test5.in bwipe')
-
-- Delete current buffer, get an empty one.
execute('bwipe!')
+ -- Append an extra line to the output register.
feed('ithis is another test line<esc>:yank A<cr>')
-- Output results
execute('%d')
execute('0put a')
- execute('1d | $d')
+ execute('$d')
-- Assert buffer contents.
expect([[
diff --git a/test/functional/legacy/015_alignment_spec.lua b/test/functional/legacy/015_alignment_spec.lua
new file mode 100644
index 0000000000..e71f9d1c90
--- /dev/null
+++ b/test/functional/legacy/015_alignment_spec.lua
@@ -0,0 +1,258 @@
+-- Tests for :right on text with embedded TAB.
+-- Also test formatting a paragraph.
+-- Also test undo after ":%s" and formatting.
+
+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('alignment', function()
+ setup(clear)
+
+ it('is working', function()
+ insert([[
+ test for :left
+ a a
+ fa a
+ dfa a
+ sdfa a
+ asdfa a
+ xasdfa a
+ asxxdfa a
+
+ test for :center
+ a a
+ fa afd asdf
+ dfa a
+ sdfa afd asdf
+ asdfa a
+ xasdfa asdfasdfasdfasdfasdf
+ asxxdfa a
+
+ test for :right
+ a a
+ fa a
+ dfa a
+ sdfa a
+ asdfa a
+ xasdfa a
+ asxxdfa a
+ asxa;ofa a
+ asdfaqwer a
+ a ax
+ fa ax
+ dfa ax
+ sdfa ax
+ asdfa ax
+ xasdfa ax
+ asxxdfa ax
+ asxa;ofa ax
+ asdfaqwer ax
+ a axx
+ fa axx
+ dfa axx
+ sdfa axx
+ asdfa axx
+ xasdfa axx
+ asxxdfa axx
+ asxa;ofa axx
+ asdfaqwer axx
+ a axxx
+ fa axxx
+ dfa axxx
+ sdfa axxx
+ asdfa axxx
+ xasdfa axxx
+ asxxdfa axxx
+ asxa;ofa axxx
+ asdfaqwer axxx
+ a axxxo
+ fa axxxo
+ dfa axxxo
+ sdfa axxxo
+ asdfa axxxo
+ xasdfa axxxo
+ asxxdfa axxxo
+ asxa;ofa axxxo
+ asdfaqwer axxxo
+ a axxxoi
+ fa axxxoi
+ dfa axxxoi
+ sdfa axxxoi
+ asdfa axxxoi
+ xasdfa axxxoi
+ asxxdfa axxxoi
+ asxa;ofa axxxoi
+ asdfaqwer axxxoi
+ a axxxoik
+ fa axxxoik
+ dfa axxxoik
+ sdfa axxxoik
+ asdfa axxxoik
+ xasdfa axxxoik
+ asxxdfa axxxoik
+ asxa;ofa axxxoik
+ asdfaqwer axxxoik
+ a axxxoike
+ fa axxxoike
+ dfa axxxoike
+ sdfa axxxoike
+ asdfa axxxoike
+ xasdfa axxxoike
+ asxxdfa axxxoike
+ asxa;ofa axxxoike
+ asdfaqwer axxxoike
+ a axxxoikey
+ fa axxxoikey
+ dfa axxxoikey
+ sdfa axxxoikey
+ asdfa axxxoikey
+ xasdfa axxxoikey
+ asxxdfa axxxoikey
+ asxa;ofa axxxoikey
+ asdfaqwer axxxoikey
+
+ xxxxx xx xxxxxx
+ xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx
+ xxxxxxxxxxxxxxxxxx xxxxx xxxx, xxxx xxxx xxxx xxxx xxx xx xx
+ xx xxxxxxx. xxxx xxxx.
+
+ > xx xx, xxxx xxxx xxx xxxx xxx xxxxx xxx xxx xxxxxxx xxx xxxxx
+ > xxxxxx xxxxxxx: xxxx xxxxxxx, xx xxxxxx xxxx xxxxxxxxxx
+
+ aa aa aa aa
+ bb bb bb bb
+ cc cc cc cc]])
+
+ execute('set tw=65')
+
+ feed([[:/^\s*test for :left/,/^\s*test for :center/ left<cr>]])
+ feed([[:/^\s*test for :center/,/^\s*test for :right/ center<cr>]])
+ feed([[:/^\s*test for :right/,/^xxx/-1 right<cr>]])
+
+ execute('set fo+=tcroql tw=72')
+
+ feed('/xxxxxxxx$<cr>')
+ feed('0gq6kk<cr>')
+
+ -- Undo/redo here to make the next undo only work on the following changes.
+ feed('u<cr>')
+ execute('map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq')
+ execute('/^aa')
+ feed('ggu<cr>')
+
+ -- Assert buffer contents.
+ expect([[
+ test for :left
+ a a
+ fa a
+ dfa a
+ sdfa a
+ asdfa a
+ xasdfa a
+ asxxdfa a
+
+ test for :center
+ a a
+ fa afd asdf
+ dfa a
+ sdfa afd asdf
+ asdfa a
+ xasdfa asdfasdfasdfasdfasdf
+ asxxdfa a
+
+ test for :right
+ a a
+ fa a
+ dfa a
+ sdfa a
+ asdfa a
+ xasdfa a
+ asxxdfa a
+ asxa;ofa a
+ asdfaqwer a
+ a ax
+ fa ax
+ dfa ax
+ sdfa ax
+ asdfa ax
+ xasdfa ax
+ asxxdfa ax
+ asxa;ofa ax
+ asdfaqwer ax
+ a axx
+ fa axx
+ dfa axx
+ sdfa axx
+ asdfa axx
+ xasdfa axx
+ asxxdfa axx
+ asxa;ofa axx
+ asdfaqwer axx
+ a axxx
+ fa axxx
+ dfa axxx
+ sdfa axxx
+ asdfa axxx
+ xasdfa axxx
+ asxxdfa axxx
+ asxa;ofa axxx
+ asdfaqwer axxx
+ a axxxo
+ fa axxxo
+ dfa axxxo
+ sdfa axxxo
+ asdfa axxxo
+ xasdfa axxxo
+ asxxdfa axxxo
+ asxa;ofa axxxo
+ asdfaqwer axxxo
+ a axxxoi
+ fa axxxoi
+ dfa axxxoi
+ sdfa axxxoi
+ asdfa axxxoi
+ xasdfa axxxoi
+ asxxdfa axxxoi
+ asxa;ofa axxxoi
+ asdfaqwer axxxoi
+ a axxxoik
+ fa axxxoik
+ dfa axxxoik
+ sdfa axxxoik
+ asdfa axxxoik
+ xasdfa axxxoik
+ asxxdfa axxxoik
+ asxa;ofa axxxoik
+ asdfaqwer axxxoik
+ a axxxoike
+ fa axxxoike
+ dfa axxxoike
+ sdfa axxxoike
+ asdfa axxxoike
+ xasdfa axxxoike
+ asxxdfa axxxoike
+ asxa;ofa axxxoike
+ asdfaqwer axxxoike
+ a axxxoikey
+ fa axxxoikey
+ dfa axxxoikey
+ sdfa axxxoikey
+ asdfa axxxoikey
+ xasdfa axxxoikey
+ asxxdfa axxxoikey
+ asxa;ofa axxxoikey
+ asdfaqwer axxxoikey
+
+ xxxxx xx xxxxxx xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx
+ xxxxxxxxxxxxxxxxxx xxxxx xxxx, xxxx xxxx xxxx xxxx xxx xx xx xx xxxxxxx.
+ xxxx xxxx.
+
+ > xx xx, xxxx xxxx xxx xxxx xxx xxxxx xxx xxx xxxxxxx xxx xxxxx xxxxxx
+ > xxxxxxx: xxxx xxxxxxx, xx xxxxxx xxxx xxxxxxxxxx
+
+ aa aa aa aa
+ bb bb bb bb
+ cc cc cc cc]])
+ end)
+end)
diff --git a/test/functional/legacy/051_highlight_spec.lua b/test/functional/legacy/051_highlight_spec.lua
index 19eb4104cd..3d0375312d 100644
--- a/test/functional/legacy/051_highlight_spec.lua
+++ b/test/functional/legacy/051_highlight_spec.lua
@@ -28,7 +28,7 @@ describe(':highlight', function()
gui=bold |
guifg=Blue |
Directory xxx ctermfg=4 |
- -- More --^ |
+ -- More --^ |
]])
feed('q')
wait() -- wait until we're back to normal
diff --git a/test/functional/legacy/077_mf_hash_grow_spec.lua b/test/functional/legacy/077_mf_hash_grow_spec.lua
new file mode 100644
index 0000000000..01d916ef04
--- /dev/null
+++ b/test/functional/legacy/077_mf_hash_grow_spec.lua
@@ -0,0 +1,45 @@
+-- Inserts 2 million lines with consecutive integers starting from 1
+-- (essentially, the output of GNU's seq 1 2000000), writes them to Xtest
+-- and calculates its cksum.
+-- We need 2 million lines to trigger a call to mf_hash_grow(). If it would mess
+-- up the lines the checksum would differ.
+-- cksum is part of POSIX and so should be available on most Unixes.
+-- If it isn't available then the test will be skipped.
+
+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('mf_hash_grow()', function()
+ setup(clear)
+
+ -- Check to see if cksum exists, otherwise skip the test
+ if os.execute('which cksum 2>&1 > /dev/null') ~= 0 then
+ pending("was not tested because cksum was not found")
+ else
+ it('is working', function()
+ execute('set fileformat=unix undolevels=-1')
+
+ -- Fill the buffer with numbers 1 - 2000000
+ execute('let i = 1')
+ execute('while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile')
+
+ -- Delete empty first line, save to Xtest, and clear buffer
+ feed('ggdd<cr>')
+ execute('w! Xtest')
+ feed('ggdG<cr>')
+
+ -- Calculate the cksum of Xtest and delete first line
+ execute('r !cksum Xtest')
+ feed('ggdd<cr>')
+
+ -- Assert correct output of cksum.
+ expect([[
+ 3678979763 14888896 Xtest]])
+ end)
+ end
+
+ teardown(function()
+ os.remove('Xtest')
+ end)
+end)
diff --git a/test/functional/legacy/084_curswant_spec.lua b/test/functional/legacy/084_curswant_spec.lua
new file mode 100644
index 0000000000..55df5d3e73
--- /dev/null
+++ b/test/functional/legacy/084_curswant_spec.lua
@@ -0,0 +1,48 @@
+-- Tests for curswant not changing when setting an option.
+
+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('curswant', function()
+ setup(clear)
+
+ it('is working', function()
+ insert([[
+ start target options
+ tabstop
+ timeoutlen
+ ttimeoutlen
+ end target options]])
+
+ source([[
+ /^start target options$/+1,/^end target options$/-1 yank
+ let target_option_names = split(@0)
+ function TestCurswant(option_name)
+ normal! ggf8j
+ let curswant_before = winsaveview().curswant
+ execute 'let' '&'.a:option_name '=' '&'.a:option_name
+ let curswant_after = winsaveview().curswant
+ return [a:option_name, curswant_before, curswant_after]
+ endfunction
+
+ new
+ put =['1234567890', '12345']
+ 1 delete _
+ let result = []
+ for option_name in target_option_names
+ call add(result, TestCurswant(option_name))
+ endfor
+
+ new
+ put =map(copy(result), 'join(v:val, '' '')')
+ 1 delete _
+ ]])
+
+ -- Assert buffer contents.
+ expect([[
+ tabstop 7 4
+ timeoutlen 7 7
+ ttimeoutlen 7 7]])
+ end)
+end)
diff --git a/test/functional/legacy/090_sha256_spec.lua b/test/functional/legacy/090_sha256_spec.lua
new file mode 100644
index 0000000000..35fbd5752e
--- /dev/null
+++ b/test/functional/legacy/090_sha256_spec.lua
@@ -0,0 +1,64 @@
+-- Tests for sha256() function.
+
+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('sha256()', function()
+ setup(clear)
+
+ it('is working', function()
+ insert("start:")
+
+ source([[
+ let testcase='test for empty string: '
+ if sha256("") ==# 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
+ let res='ok'
+ else
+ let res='ng'
+ endif
+ $put =testcase.res
+
+ let testcase='test for 1 char: '
+ if sha256("a") ==# 'ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb'
+ let res='ok'
+ else
+ let res='ng'
+ endif
+ $put =testcase.res
+
+ let testcase='test for 3 chars: '
+ if sha256("abc") ==# 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'
+ let res='ok'
+ else
+ let res='ng'
+ endif
+ $put =testcase.res
+
+ let testcase='test for contains meta char: '
+ if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8cc39ed110ca776'
+ let res='ok'
+ else
+ let res='ng'
+ endif
+ $put =testcase.res
+
+ let testcase='test for contains non-ascii char: '
+ if sha256("\xde\xad\xbe\xef") ==# '5f78c33274e43fa9de5659265c1d917e25c03722dcb0b8d27db8d5feaa813953'
+ let res='ok'
+ else
+ let res='ng'
+ endif
+ $put =testcase.res
+ ]])
+
+ -- Assert buffer contents.
+ expect([[
+ start:
+ test for empty string: ok
+ test for 1 char: ok
+ test for 3 chars: ok
+ test for contains meta char: ok
+ test for contains non-ascii char: ok]])
+ end)
+end)
diff --git a/test/functional/legacy/091_context_variables_spec.lua b/test/functional/legacy/091_context_variables_spec.lua
new file mode 100644
index 0000000000..bb9c32b84f
--- /dev/null
+++ b/test/functional/legacy/091_context_variables_spec.lua
@@ -0,0 +1,176 @@
+-- Tests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar().
+
+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('context variables', function()
+ setup(clear)
+
+ it('is working', function()
+ insert("start:")
+
+ -- Test for getbufvar().
+ -- Use strings to test for memory leaks.
+ source([[
+ let b:var_num = '1234'
+ let def_num = '5678'
+ $put =string(getbufvar(1, 'var_num'))
+ $put =string(getbufvar(1, 'var_num', def_num))
+ $put =string(getbufvar(1, ''))
+ $put =string(getbufvar(1, '', def_num))
+ unlet b:var_num
+ $put =string(getbufvar(1, 'var_num', def_num))
+ $put =string(getbufvar(1, ''))
+ $put =string(getbufvar(1, '', def_num))
+ $put =string(getbufvar(9, ''))
+ $put =string(getbufvar(9, '', def_num))
+ unlet def_num
+ $put =string(getbufvar(1, '&autoindent'))
+ $put =string(getbufvar(1, '&autoindent', 1))
+ ]])
+
+ -- Open new window with forced option values.
+ source([[
+ set fileformats=unix,dos
+ new ++ff=dos ++bin ++enc=iso-8859-2
+ let otherff = getbufvar(bufnr('%'), '&fileformat')
+ let otherbin = getbufvar(bufnr('%'), '&bin')
+ let otherfenc = getbufvar(bufnr('%'), '&fenc')
+ close
+ $put =otherff
+ $put =string(otherbin)
+ $put =otherfenc
+ unlet otherff otherbin otherfenc
+ ]])
+
+ -- Test for getwinvar().
+ source([[
+ let w:var_str = "Dance"
+ let def_str = "Chance"
+ $put =string(getwinvar(1, 'var_str'))
+ $put =string(getwinvar(1, 'var_str', def_str))
+ $put =string(getwinvar(1, ''))
+ $put =string(getwinvar(1, '', def_str))
+ unlet w:var_str
+ $put =string(getwinvar(1, 'var_str', def_str))
+ $put =string(getwinvar(1, ''))
+ $put =string(getwinvar(1, '', def_str))
+ $put =string(getwinvar(9, ''))
+ $put =string(getwinvar(9, '', def_str))
+ $put =string(getwinvar(1, '&nu'))
+ $put =string(getwinvar(1, '&nu', 1))
+ unlet def_str
+ ]])
+
+ -- Test for gettabvar().
+ source([[
+ tabnew
+ tabnew
+ let t:var_list = [1, 2, 3]
+ let t:other = 777
+ let def_list = [4, 5, 6, 7]
+ tabrewind
+ $put =string(gettabvar(3, 'var_list'))
+ $put =string(gettabvar(3, 'var_list', def_list))
+ $put =string(gettabvar(3, ''))
+ $put =string(gettabvar(3, '', def_list))
+ tablast
+ unlet t:var_list
+ tabrewind
+ $put =string(gettabvar(3, 'var_list', def_list))
+ $put =string(gettabvar(9, ''))
+ $put =string(gettabvar(9, '', def_list))
+ $put =string(gettabvar(3, '&nu'))
+ $put =string(gettabvar(3, '&nu', def_list))
+ unlet def_list
+ tabonly
+ ]])
+
+ -- Test for gettabwinvar().
+ source([[
+ tabnew
+ tabnew
+ tabprev
+ split
+ split
+ wincmd w
+ vert split
+ wincmd w
+ let w:var_dict = {'dict': 'tabwin'}
+ let def_dict = {'dict2': 'newval'}
+ wincmd b
+ tabrewind
+ $put =string(gettabwinvar(2, 3, 'var_dict'))
+ $put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
+ $put =string(gettabwinvar(2, 3, ''))
+ $put =string(gettabwinvar(2, 3, '', def_dict))
+ tabnext
+ 3wincmd w
+ unlet w:var_dict
+ tabrewind
+ $put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
+ $put =string(gettabwinvar(2, 3, ''))
+ $put =string(gettabwinvar(2, 3, '', def_dict))
+ $put =string(gettabwinvar(2, 9, ''))
+ $put =string(gettabwinvar(2, 9, '', def_dict))
+ $put =string(gettabwinvar(9, 3, ''))
+ $put =string(gettabwinvar(9, 3, '', def_dict))
+ unlet def_dict
+ $put =string(gettabwinvar(2, 3, '&nux'))
+ $put =string(gettabwinvar(2, 3, '&nux', 1))
+ tabonly
+ ]])
+
+ -- Assert buffer contents.
+ expect([[
+ start:
+ '1234'
+ '1234'
+ {'var_num': '1234'}
+ {'var_num': '1234'}
+ '5678'
+ {}
+ {}
+ ''
+ '5678'
+ 0
+ 0
+ dos
+ 1
+ iso-8859-2
+ 'Dance'
+ 'Dance'
+ {'var_str': 'Dance'}
+ {'var_str': 'Dance'}
+ 'Chance'
+ {}
+ {}
+ ''
+ 'Chance'
+ 0
+ 0
+ [1, 2, 3]
+ [1, 2, 3]
+ {'var_list': [1, 2, 3], 'other': 777}
+ {'var_list': [1, 2, 3], 'other': 777}
+ [4, 5, 6, 7]
+ ''
+ [4, 5, 6, 7]
+ ''
+ [4, 5, 6, 7]
+ {'dict': 'tabwin'}
+ {'dict': 'tabwin'}
+ {'var_dict': {'dict': 'tabwin'}}
+ {'var_dict': {'dict': 'tabwin'}}
+ {'dict2': 'newval'}
+ {}
+ {}
+ ''
+ {'dict2': 'newval'}
+ ''
+ {'dict2': 'newval'}
+ ''
+ 1]])
+ end)
+end)
diff --git a/test/functional/legacy/095_regexp_multibyte_spec.lua b/test/functional/legacy/095_regexp_multibyte_spec.lua
new file mode 100644
index 0000000000..a72fb669d2
--- /dev/null
+++ b/test/functional/legacy/095_regexp_multibyte_spec.lua
@@ -0,0 +1,270 @@
+-- Test for regexp patterns with multi-byte support, using utf-8.
+-- See test64 for the non-multi-byte tests.
+-- A pattern that gives the expected result produces OK, so that we know it was
+-- actually tried.
+
+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('regex with multi-byte', function()
+ setup(clear)
+
+ it('is working', function()
+ insert([[
+ Results of test95:]])
+
+ source([=[
+ set encoding=utf-8 nomore
+ let tl = []
+
+ call add(tl, [2, '[[:alpha:][=a=]]\+', '879 aiaãâaiuvna ', 'aiaãâaiuvna'])
+ call add(tl, [2, '[[=a=]]\+', 'ddaãâbcd', 'aãâ']) " equivalence classes
+ call add(tl, [2, '[^ม ]\+', 'มม oijasoifjos ifjoisj f osij j มมมมม abcd', 'oijasoifjos'])
+ call add(tl, [2, ' [^ ]\+', 'start มabcdม ', ' มabcdม'])
+ call add(tl, [2, '[ม[:alpha:][=a=]]\+', '879 aiaãมâมaiuvna ', 'aiaãมâมaiuvna'])
+
+ call add(tl, [2, '\p\+', 'ìa', 'ìa'])
+ call add(tl, [2, '\p*', 'aあ', 'aあ'])
+
+ call add(tl, [2, '\i\+', '&*¨xx ', 'xx'])
+ call add(tl, [2, '\f\+', '&*Ÿfname ', 'fname'])
+
+ call add(tl, [2, '.ม', 'xม่x yมy', 'yม'])
+ call add(tl, [2, '.ม่', 'xม่x yมy', 'xม่'])
+ call add(tl, [2, "\u05b9", " x\u05b9 ", "x\u05b9"])
+ call add(tl, [2, ".\u05b9", " x\u05b9 ", "x\u05b9"])
+ call add(tl, [2, "\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
+ call add(tl, [2, ".\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
+ call add(tl, [2, "\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
+ call add(tl, [2, ".\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
+ call add(tl, [2, "\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])
+ call add(tl, [2, ".\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])
+ call add(tl, [2, "\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])
+ call add(tl, [2, ".\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])
+ call add(tl, [1, "\u05b9\u05bb", " y\u05b9 x\u05b9\u05bb ", "x\u05b9\u05bb"])
+ call add(tl, [2, ".\u05b9\u05bb", " y\u05bb x\u05b9\u05bb ", "x\u05b9\u05bb"])
+ call add(tl, [2, "a", "ca\u0300t"])
+ call add(tl, [2, "ca", "ca\u0300t"])
+ call add(tl, [2, "a\u0300", "ca\u0300t", "a\u0300"])
+ call add(tl, [2, 'a\%C', "ca\u0300t", "a\u0300"])
+ call add(tl, [2, 'ca\%C', "ca\u0300t", "ca\u0300"])
+ call add(tl, [2, 'ca\%Ct', "ca\u0300t", "ca\u0300t"])
+
+ call add(tl, [2, 'ú\Z', 'x'])
+ call add(tl, [2, 'יהוה\Z', 'יהוה', 'יהוה'])
+ call add(tl, [2, 'יְהוָה\Z', 'יהוה', 'יהוה'])
+ call add(tl, [2, 'יהוה\Z', 'יְהוָה', 'יְהוָה'])
+ call add(tl, [2, 'יְהוָה\Z', 'יְהוָה', 'יְהוָה'])
+ call add(tl, [2, 'יְ\Z', 'וְיַ', 'יַ'])
+ call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"])
+ call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200dxy", "ק\u200dx"])
+ call add(tl, [2, "ק\u200dx\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"])
+ call add(tl, [2, "ק\u200dx\\Z", "xק\u200dxy", "ק\u200dx"])
+ call add(tl, [2, "\u05b9\\Z", "xyz"])
+ call add(tl, [2, "\\Z\u05b9", "xyz"])
+ call add(tl, [2, "\u05b9\\Z", "xy\u05b9z", "y\u05b9"])
+ call add(tl, [2, "\\Z\u05b9", "xy\u05b9z", "y\u05b9"])
+ call add(tl, [1, "\u05b9\\+\\Z", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])
+ call add(tl, [1, "\\Z\u05b9\\+", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])
+
+ call add(tl, [2, '[^[=a=]]\+', 'ddaãâbcd', 'dd'])
+
+ for t in tl
+ let re = t[0]
+ let pat = t[1]
+ let text = t[2]
+ let matchidx = 3
+ for engine in [0, 1, 2]
+ if engine == 2 && re == 0 || engine == 1 && re == 1
+ continue
+ endif
+ let &regexpengine = engine
+ try
+ let l = matchlist(text, pat)
+ catch
+ $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", caused an exception: \"' . v:exception . '\"'
+ endtry
+ if len(l) == 0 && len(t) > matchidx
+ $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", did not match, expected: \"' . t[matchidx] . '\"'
+ elseif len(l) > 0 && len(t) == matchidx
+ $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected no match'
+ elseif len(t) > matchidx && l[0] != t[matchidx]
+ $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"'
+ else
+ $put ='OK ' . engine . ' - ' . pat
+ endif
+ if len(l) > 0
+ for i in range(1, 9)
+ if len(t) <= matchidx + i
+ let e = ''
+ else
+ let e = t[matchidx + i]
+ endif
+ if l[i] != e
+ $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'
+ endif
+ endfor
+ unlet i
+ endif
+ endfor
+ endfor
+ unlet t tl e l
+
+ set regexpengine=1 ambiwidth=single
+ $put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')
+
+ set regexpengine=1 ambiwidth=double
+ $put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')
+
+ set regexpengine=2 ambiwidth=single
+ $put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')
+
+ set regexpengine=2 ambiwidth=double
+ $put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')
+ ]=])
+
+ -- Assert buffer contents.
+ expect([=[
+ Results of test95:
+ OK 0 - [[:alpha:][=a=]]\+
+ OK 1 - [[:alpha:][=a=]]\+
+ OK 2 - [[:alpha:][=a=]]\+
+ OK 0 - [[=a=]]\+
+ OK 1 - [[=a=]]\+
+ OK 2 - [[=a=]]\+
+ OK 0 - [^ม ]\+
+ OK 1 - [^ม ]\+
+ OK 2 - [^ม ]\+
+ OK 0 - [^ ]\+
+ OK 1 - [^ ]\+
+ OK 2 - [^ ]\+
+ OK 0 - [ม[:alpha:][=a=]]\+
+ OK 1 - [ม[:alpha:][=a=]]\+
+ OK 2 - [ม[:alpha:][=a=]]\+
+ OK 0 - \p\+
+ OK 1 - \p\+
+ OK 2 - \p\+
+ OK 0 - \p*
+ OK 1 - \p*
+ OK 2 - \p*
+ OK 0 - \i\+
+ OK 1 - \i\+
+ OK 2 - \i\+
+ OK 0 - \f\+
+ OK 1 - \f\+
+ OK 2 - \f\+
+ OK 0 - .ม
+ OK 1 - .ม
+ OK 2 - .ม
+ OK 0 - .ม่
+ OK 1 - .ม่
+ OK 2 - .ม่
+ OK 0 - ֹ
+ OK 1 - ֹ
+ OK 2 - ֹ
+ OK 0 - .ֹ
+ OK 1 - .ֹ
+ OK 2 - .ֹ
+ OK 0 - ֹֻ
+ OK 1 - ֹֻ
+ OK 2 - ֹֻ
+ OK 0 - .ֹֻ
+ OK 1 - .ֹֻ
+ OK 2 - .ֹֻ
+ OK 0 - ֹֻ
+ OK 1 - ֹֻ
+ OK 2 - ֹֻ
+ OK 0 - .ֹֻ
+ OK 1 - .ֹֻ
+ OK 2 - .ֹֻ
+ OK 0 - ֹ
+ OK 1 - ֹ
+ OK 2 - ֹ
+ OK 0 - .ֹ
+ OK 1 - .ֹ
+ OK 2 - .ֹ
+ OK 0 - ֹ
+ OK 1 - ֹ
+ OK 2 - ֹ
+ OK 0 - .ֹ
+ OK 1 - .ֹ
+ OK 2 - .ֹ
+ OK 0 - ֹֻ
+ OK 2 - ֹֻ
+ OK 0 - .ֹֻ
+ OK 1 - .ֹֻ
+ OK 2 - .ֹֻ
+ OK 0 - a
+ OK 1 - a
+ OK 2 - a
+ OK 0 - ca
+ OK 1 - ca
+ OK 2 - ca
+ OK 0 - à
+ OK 1 - à
+ OK 2 - à
+ OK 0 - a\%C
+ OK 1 - a\%C
+ OK 2 - a\%C
+ OK 0 - ca\%C
+ OK 1 - ca\%C
+ OK 2 - ca\%C
+ OK 0 - ca\%Ct
+ OK 1 - ca\%Ct
+ OK 2 - ca\%Ct
+ OK 0 - ú\Z
+ OK 1 - ú\Z
+ OK 2 - ú\Z
+ OK 0 - יהוה\Z
+ OK 1 - יהוה\Z
+ OK 2 - יהוה\Z
+ OK 0 - יְהוָה\Z
+ OK 1 - יְהוָה\Z
+ OK 2 - יְהוָה\Z
+ OK 0 - יהוה\Z
+ OK 1 - יהוה\Z
+ OK 2 - יהוה\Z
+ OK 0 - יְהוָה\Z
+ OK 1 - יְהוָה\Z
+ OK 2 - יְהוָה\Z
+ OK 0 - יְ\Z
+ OK 1 - יְ\Z
+ OK 2 - יְ\Z
+ OK 0 - ק‍ֹx\Z
+ OK 1 - ק‍ֹx\Z
+ OK 2 - ק‍ֹx\Z
+ OK 0 - ק‍ֹx\Z
+ OK 1 - ק‍ֹx\Z
+ OK 2 - ק‍ֹx\Z
+ OK 0 - ק‍x\Z
+ OK 1 - ק‍x\Z
+ OK 2 - ק‍x\Z
+ OK 0 - ק‍x\Z
+ OK 1 - ק‍x\Z
+ OK 2 - ק‍x\Z
+ OK 0 - ֹ\Z
+ OK 1 - ֹ\Z
+ OK 2 - ֹ\Z
+ OK 0 - \Zֹ
+ OK 1 - \Zֹ
+ OK 2 - \Zֹ
+ OK 0 - ֹ\Z
+ OK 1 - ֹ\Z
+ OK 2 - ֹ\Z
+ OK 0 - \Zֹ
+ OK 1 - \Zֹ
+ OK 2 - \Zֹ
+ OK 0 - ֹ\+\Z
+ OK 2 - ֹ\+\Z
+ OK 0 - \Zֹ\+
+ OK 2 - \Zֹ\+
+ OK 0 - [^[=a=]]\+
+ OK 1 - [^[=a=]]\+
+ OK 2 - [^[=a=]]\+
+ eng 1 ambi single: 0
+ eng 1 ambi double: 0
+ eng 2 ambi single: 0
+ eng 2 ambi double: 0]=])
+ end)
+end)
diff --git a/test/functional/legacy/098_scrollbind_spec.lua b/test/functional/legacy/098_scrollbind_spec.lua
new file mode 100644
index 0000000000..7b2059e38b
--- /dev/null
+++ b/test/functional/legacy/098_scrollbind_spec.lua
@@ -0,0 +1,48 @@
+-- Test for 'scrollbind' causing an unexpected scroll of one of the windows.
+
+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('scrollbind', function()
+ setup(clear)
+
+ it('is working', function()
+ source([[
+ set laststatus=0
+ let g:totalLines = &lines * 20
+ let middle = g:totalLines / 2
+ wincmd n
+ wincmd o
+ for i in range(1, g:totalLines)
+ call setline(i, 'LINE ' . i)
+ endfor
+ exe string(middle)
+ normal zt
+ normal M
+ aboveleft vert new
+ for i in range(1, g:totalLines)
+ call setline(i, 'line ' . i)
+ endfor
+ exe string(middle)
+ normal zt
+ normal M
+ setl scb | wincmd p
+ setl scb
+ wincmd w
+ let topLineLeft = line('w0')
+ wincmd p
+ let topLineRight = line('w0')
+ setl noscrollbind
+ wincmd p
+ setl noscrollbind
+ q!
+ %del _
+ call setline(1, 'Difference between the top lines (left - right): ' . string(topLineLeft - topLineRight))
+ brewind
+ ]])
+
+ -- Assert buffer contents.
+ expect("Difference between the top lines (left - right): 0")
+ end)
+end)
diff --git a/test/functional/legacy/100_undo_level_spec.lua b/test/functional/legacy/100_undo_level_spec.lua
new file mode 100644
index 0000000000..9143d9e540
--- /dev/null
+++ b/test/functional/legacy/100_undo_level_spec.lua
@@ -0,0 +1,142 @@
+-- Tests for 'undolevel' setting being global-local
+
+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('undolevel', function()
+ setup(clear)
+
+ it('is working', function()
+ source([[
+ set ul=5
+ fu! FillBuffer()
+ for i in range(1,13)
+ put=i
+ exe "setg ul=" . &g:ul
+ endfor
+ endfu
+ fu! UndoLevel()
+ redir @z
+ setglobal undolevels?
+ echon ' global'
+ setlocal undolevels?
+ echon ' local'
+ redir end
+ $put z
+ endfu
+
+ 0put ='ONE: expecting global undolevels: 5, local undolevels: -123456 (default)'
+ call FillBuffer()
+ setlocal undolevels<
+ earlier 10
+ call UndoLevel()
+ set ff=unix
+ %yank A
+ %delete
+
+ 0put ='TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards)'
+ setlocal ul=2
+ call FillBuffer()
+ earlier 10
+ call UndoLevel()
+ setlocal ul=10
+ call UndoLevel()
+ set ff=unix
+ %yank A
+ %delete
+ setlocal undolevels<
+ redir @A
+ echo "global value shouldn't be changed and still be 5!"
+ echo 'ONE: expecting global undolevels: 5, local undolevels: -123456 (default)'
+ setglobal undolevels?
+ echon ' global'
+ setlocal undolevels?
+ echon ' local'
+ echo ""
+ redir end
+
+ setglobal ul=50
+ 1put ='global value should be changed to 50'
+ 2put ='THREE: expecting global undolevels: 50, local undolevels: -123456 (default)'
+ call UndoLevel()
+ set ff=unix
+ %yank A
+ %delete
+ setglobal lispwords=foo,bar,baz
+ setlocal lispwords-=foo
+ setlocal lispwords+=quux
+ redir @A
+ echo "Testing 'lispwords' local value"
+ setglobal lispwords?
+ setlocal lispwords?
+ echo &lispwords
+ echo ''
+ redir end
+ setlocal lispwords<
+ redir @A
+ echo "Testing 'lispwords' value reset"
+ setglobal lispwords?
+ setlocal lispwords?
+ echo &lispwords
+ redir end
+
+ 0put a
+ $d
+ ]])
+
+ -- Assert buffer contents.
+ expect([[
+ ONE: expecting global undolevels: 5, local undolevels: -123456 (default)
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+
+
+ undolevels=5 global
+ undolevels=-123456 local
+ TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards)
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+
+
+ undolevels=5 global
+ undolevels=2 local
+
+ undolevels=5 global
+ undolevels=10 local
+
+ global value shouldn't be changed and still be 5!
+ ONE: expecting global undolevels: 5, local undolevels: -123456 (default)
+ undolevels=5 global
+ undolevels=-123456 local
+
+ global value should be changed to 50
+ THREE: expecting global undolevels: 50, local undolevels: -123456 (default)
+
+ undolevels=50 global
+ undolevels=-123456 local
+
+ Testing 'lispwords' local value
+ lispwords=foo,bar,baz
+ lispwords=bar,baz,quux
+ bar,baz,quux
+
+ Testing 'lispwords' value reset
+ lispwords=foo,bar,baz
+ lispwords=foo,bar,baz
+ foo,bar,baz]])
+ end)
+end)
diff --git a/test/functional/legacy/103_visual_mode_reset_spec.lua b/test/functional/legacy/103_visual_mode_reset_spec.lua
new file mode 100644
index 0000000000..6b2f3bc1b6
--- /dev/null
+++ b/test/functional/legacy/103_visual_mode_reset_spec.lua
@@ -0,0 +1,47 @@
+-- Test for visual mode not being reset causing E315 error.
+
+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('E315 error', function()
+ setup(clear)
+
+ it('is working', function()
+ -- At this point there is no visual selection because :call reset it.
+ -- Let's restore the selection:
+ source([[
+ let g:msg="Everything's fine."
+ function! TriggerTheProblem()
+ normal gv
+ '<,'>del _
+ try
+ exe "normal \<Esc>"
+ catch /^Vim\%((\a\+)\)\=:E315/
+ echom 'Snap! E315 error!'
+ let g:msg='Snap! E315 error!'
+ endtry
+ endfunction
+ enew
+ enew
+ setl buftype=nofile
+ call append(line('$'), 'Delete this line.')
+ ]])
+
+ -- NOTE: this has to be done by a call to a function because executing
+ -- :del the ex-way will require the colon operator which resets the
+ -- visual mode thus preventing the problem:
+ feed('GV:call TriggerTheProblem()<cr>')
+
+ source([[
+ %del _
+ call append(line('$'), g:msg)
+ brewind
+ ]])
+
+ -- Assert buffer contents.
+ expect([[
+
+ Everything's fine.]])
+ end)
+end)
diff --git a/test/functional/legacy/104_let_assignment.lua b/test/functional/legacy/104_let_assignment_spec.lua
index a2431da835..a2431da835 100644
--- a/test/functional/legacy/104_let_assignment.lua
+++ b/test/functional/legacy/104_let_assignment_spec.lua
diff --git a/test/functional/legacy/107_adjust_window_and_contents_spec.lua b/test/functional/legacy/107_adjust_window_and_contents_spec.lua
index ffc2208d6e..f6ea7e5a6c 100644
--- a/test/functional/legacy/107_adjust_window_and_contents_spec.lua
+++ b/test/functional/legacy/107_adjust_window_and_contents_spec.lua
@@ -43,7 +43,7 @@ describe('107', function()
start: |
[1, '1 '] |
[50, '50 '] |
- ^59, '59 '] |
+ ^[59, '59 '] |
~ |
~ |
~ |
diff --git a/test/functional/legacy/listlbr_utf8_spec.lua b/test/functional/legacy/listlbr_utf8_spec.lua
new file mode 100644
index 0000000000..303596976f
--- /dev/null
+++ b/test/functional/legacy/listlbr_utf8_spec.lua
@@ -0,0 +1,79 @@
+-- Test for linebreak and list option in utf-8 mode
+
+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('linebreak', function()
+ setup(clear)
+
+ it('is working', function()
+ source([[
+ set wildchar=^E
+ 10new
+ vsp
+ vert resize 20
+ put =\"\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \"
+ norm! zt
+ set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
+ fu! ScreenChar(width)
+ let c=''
+ for j in range(1,4)
+ for i in range(1,a:width)
+ let c.=nr2char(screenchar(j, i))
+ endfor
+ let c.="\n"
+ endfor
+ return c
+ endfu
+ fu! DoRecordScreen()
+ wincmd l
+ $put =printf(\"\n%s\", g:test)
+ $put =g:line
+ wincmd p
+ endfu
+ let g:test ="Test 1: set linebreak + set list + fancy listchars"
+ exe "set linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eol:\ub6"
+ redraw!
+ let line=ScreenChar(winwidth(0))
+ call DoRecordScreen()
+ let g:test ="Test 2: set nolinebreak list"
+ set list nolinebreak
+ redraw!
+ let line=ScreenChar(winwidth(0))
+ call DoRecordScreen()
+ let g:test ="Test 3: set linebreak nolist"
+ $put =\"\t*mask = nil;\"
+ $
+ norm! zt
+ set nolist linebreak
+ redraw!
+ let line=ScreenChar(winwidth(0))
+ call DoRecordScreen()
+ ]])
+
+ -- Assert buffer contents.
+ expect([[
+
+ abcdef hijklmn pqrstuvwxyz 1060ABCDEFGHIJKLMNOP
+
+ Test 1: set linebreak + set list + fancy listchars
+ ▕———abcdef
+ +hijklmn▕———
+ +pqrstuvwxyz␣1060ABC
+ +DEFGHIJKLMNOPˑ¶
+
+ Test 2: set nolinebreak list
+ ▕———abcdef hijklmn▕—
+ +pqrstuvwxyz␣1060ABC
+ +DEFGHIJKLMNOPˑ¶
+ ¶
+ *mask = nil;
+
+ Test 3: set linebreak nolist
+ *mask = nil;
+ ~
+ ~
+ ~ ]])
+ end)
+end)
diff --git a/test/functional/legacy/qf_title_spec.lua b/test/functional/legacy/qf_title_spec.lua
new file mode 100644
index 0000000000..aa005117be
--- /dev/null
+++ b/test/functional/legacy/qf_title_spec.lua
@@ -0,0 +1,30 @@
+-- Tests for quickfix window's title
+
+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('qf_title', function()
+ setup(clear)
+
+ it('is working', function()
+ insert([[
+ Results of test_qf_title:]])
+
+ source([[
+ set efm=%E%f:%l:%c:%m
+ cgetexpr ['file:1:1:message']
+ let qflist=getqflist()
+ call setqflist(qflist, 'r')
+ copen
+ let g:quickfix_title=w:quickfix_title
+ wincmd p
+ $put =g:quickfix_title
+ ]])
+
+ -- Assert buffer contents.
+ expect([[
+ Results of test_qf_title:
+ :setqflist()]])
+ end)
+end)
diff --git a/test/functional/preload.lua b/test/functional/preload.lua
new file mode 100644
index 0000000000..5f34f7fa6e
--- /dev/null
+++ b/test/functional/preload.lua
@@ -0,0 +1,5 @@
+-- Modules loaded here will not be cleared and reloaded by Busted.
+-- Busted started doing this to help provide more isolation. See issue #62
+-- for more information about this.
+local ffi = require('ffi')
+local helpers = require('test.functional.helpers')
diff --git a/test/functional/shell/viml_system_spec.lua b/test/functional/shell/viml_system_spec.lua
index 75e9de6aa9..2742e23e00 100644
--- a/test/functional/shell/viml_system_spec.lua
+++ b/test/functional/shell/viml_system_spec.lua
@@ -60,7 +60,7 @@ describe('system()', function()
it('`echo` and waits for its return', function()
feed(':call system("echo")<cr>')
screen:expect([[
- ^ |
+ ^ |
~ |
~ |
~ |
@@ -93,11 +93,11 @@ describe('system()', function()
~ |
~ |
~ |
- ^call system("yes") |
+ ^:call system("yes") |
]])
feed('<c-c>')
screen:expect([[
- ^ |
+ ^ |
~ |
~ |
~ |
@@ -226,7 +226,7 @@ describe('systemlist()', function()
it('`echo` and waits for its return', function()
feed(':call systemlist("echo")<cr>')
screen:expect([[
- ^ |
+ ^ |
~ |
~ |
~ |
@@ -259,11 +259,11 @@ describe('systemlist()', function()
~ |
~ |
~ |
- ^call systemlist("yes | xargs") |
+ ^:call systemlist("yes | xargs") |
]])
feed('<c-c>')
screen:expect([[
- ^ |
+ ^ |
~ |
~ |
~ |
diff --git a/test/functional/ui/highlight_spec.lua b/test/functional/ui/highlight_spec.lua
index 52ab3cb5bf..33a53ef201 100644
--- a/test/functional/ui/highlight_spec.lua
+++ b/test/functional/ui/highlight_spec.lua
@@ -54,7 +54,7 @@ describe('Default highlight groups', function()
})
execute('sp', 'vsp', 'vsp')
screen:expect([[
- ^ {2:|} {2:|} |
+ ^ {2:|} {2:|} |
~ {2:|}~ {2:|}~ |
~ {2:|}~ {2:|}~ |
~ {2:|}~ {2:|}~ |
@@ -79,7 +79,7 @@ describe('Default highlight groups', function()
~ {2:|}~ {2:|}~ |
~ {2:|}~ {2:|}~ |
{2:[No Name] [No Name] [No Name] }|
- ^ |
+ ^ |
~ |
~ |
~ |
@@ -92,7 +92,7 @@ describe('Default highlight groups', function()
-- (upstream vim has the same behavior)
feed('<c-w>k<c-w>l')
screen:expect([[
- {2:|}^ {2:|} |
+ {2:|}^ {2:|} |
~ {2:|}~ {2:|}~ |
~ {2:|}~ {2:|}~ |
~ {2:|}~ {2:|}~ |
@@ -109,7 +109,7 @@ describe('Default highlight groups', function()
]])
feed('<c-w>l')
screen:expect([[
- {2:|} {2:|}^ |
+ {2:|} {2:|}^ |
~ {2:|}~ {2:|}~ |
~ {2:|}~ {2:|}~ |
~ {2:|}~ {2:|}~ |
@@ -126,7 +126,7 @@ describe('Default highlight groups', function()
]])
feed('<c-w>h<c-w>h')
screen:expect([[
- ^ {2:|} {2:|} |
+ ^ {2:|} {2:|} |
~ {2:|}~ {2:|}~ |
~ {2:|}~ {2:|}~ |
~ {2:|}~ {2:|}~ |
@@ -146,7 +146,7 @@ describe('Default highlight groups', function()
it('insert mode text', function()
feed('i')
screen:expect([[
- ^ |
+ ^ |
~ |
~ |
~ |
@@ -165,7 +165,7 @@ describe('Default highlight groups', function()
it('end of file markers', function()
screen:expect([[
- ^ |
+ ^ |
{1:~ }|
{1:~ }|
{1:~ }|
@@ -198,7 +198,7 @@ describe('Default highlight groups', function()
~ |
:ls |
1 %a "[No Name]" line 1 |
- {1:Press ENTER or type command to continue}^ |
+ {1:Press ENTER or type command to continue}^ |
]], {[1] = {bold = true, foreground = hlgroup_colors.Question}})
feed('<cr>') -- skip the "Press ENTER..." state or tests will hang
end)
diff --git a/test/functional/ui/mouse_spec.lua b/test/functional/ui/mouse_spec.lua
index 296487fc9c..f1973f60ba 100644
--- a/test/functional/ui/mouse_spec.lua
+++ b/test/functional/ui/mouse_spec.lua
@@ -28,7 +28,7 @@ describe('Mouse input', function()
screen:expect([[
testing |
mouse |
- support and selectio^ |
+ support and selectio^n |
~ |
|
]])
@@ -42,14 +42,14 @@ describe('Mouse input', function()
feed('<LeftMouse><2,1>')
screen:expect([[
testing |
- mo^se |
+ mo^use |
support and selection |
~ |
|
]])
feed('<LeftMouse><0,0>')
screen:expect([[
- ^esting |
+ ^testing |
mouse |
support and selection |
~ |
@@ -62,7 +62,7 @@ describe('Mouse input', function()
feed('<LeftMouse><2,1>')
screen:expect([[
testing |
- mo^se |
+ mo^use |
support and selection |
~ |
|
@@ -70,7 +70,7 @@ describe('Mouse input', function()
feed('<LeftDrag><4,1>')
screen:expect([[
testing |
- mo{1:us}^ |
+ mo{1:us}^e |
support and selection |
~ |
{2:-- VISUAL --} |
@@ -79,13 +79,13 @@ describe('Mouse input', function()
screen:expect([[
testing |
mo{1:use } |
- {1:su}^port and selection |
+ {1:su}^pport and selection |
~ |
{2:-- VISUAL --} |
]])
feed('<LeftDrag><0,0>')
screen:expect([[
- ^{1:esting } |
+ ^t{1:esting } |
{1:mou}se |
support and selection |
~ |
@@ -98,7 +98,7 @@ describe('Mouse input', function()
screen:expect([[
testing |
mouse |
- {1:suppor}^ and selection |
+ {1:suppor}^t and selection |
~ |
{2:-- VISUAL --} |
]])
@@ -109,7 +109,7 @@ describe('Mouse input', function()
screen:expect([[
testing |
mouse |
- {1:su}^{1:port and selection } |
+ {1:su}^p{1:port and selection } |
~ |
{2:-- VISUAL LINE --} |
]])
@@ -120,7 +120,7 @@ describe('Mouse input', function()
screen:expect([[
testing |
mouse |
- su^port and selection |
+ su^pport and selection |
~ |
{2:-- VISUAL BLOCK --} |
]])
@@ -129,7 +129,7 @@ describe('Mouse input', function()
it('right click extends visual selection to the clicked location', function()
feed('<LeftMouse><0,0>')
screen:expect([[
- ^esting |
+ ^testing |
mouse |
support and selection |
~ |
@@ -139,7 +139,7 @@ describe('Mouse input', function()
screen:expect([[
{1:testing } |
{1:mouse } |
- {1:su}^port and selection |
+ {1:su}^pport and selection |
~ |
{2:-- VISUAL --} |
]])
@@ -153,7 +153,7 @@ describe('Mouse input', function()
E426: tag not found: test|
ing |
Press ENTER or type comma|
- nd to continue^ |
+ nd to continue^ |
]],nil,true)
feed('<cr>')
end)
@@ -179,7 +179,7 @@ describe('Mouse input', function()
to |to |
test |test |
mouse scrolling |mouse scrolling |
- ^ | |
+ ^ | |
~ |~ |
[No Name] [+] [No Name] [+] |
to |
@@ -193,7 +193,7 @@ describe('Mouse input', function()
feed('<MouseUp><0,0>')
screen:expect([[
mouse scrolling |lines |
- ^ |to |
+ ^ |to |
~ |test |
~ |mouse scrolling |
~ | |
@@ -210,7 +210,7 @@ describe('Mouse input', function()
feed('<MouseDown><27,0>')
screen:expect([[
mouse scrolling |text |
- ^ |with |
+ ^ |with |
~ |many |
~ |lines |
~ |to |
@@ -227,7 +227,7 @@ describe('Mouse input', function()
feed('<MouseDown><27,7><MouseDown>')
screen:expect([[
mouse scrolling |text |
- ^ |with |
+ ^ |with |
~ |many |
~ |lines |
~ |to |
diff --git a/test/functional/ui/screen.lua b/test/functional/ui/screen.lua
index 71703cc112..585037466e 100644
--- a/test/functional/ui/screen.lua
+++ b/test/functional/ui/screen.lua
@@ -418,9 +418,8 @@ function Screen:_row_repr(row, attr_ids, attr_ignore)
end
if self._rows[self._cursor.row] == row and self._cursor.col == i then
table.insert(rv, '^')
- else
- table.insert(rv, row[i].text)
end
+ table.insert(rv, row[i].text)
end
if current_attr_id then
table.insert(rv, '}')
diff --git a/test/functional/ui/screen_basic_spec.lua b/test/functional/ui/screen_basic_spec.lua
index 06edf44a7c..366a0af453 100644
--- a/test/functional/ui/screen_basic_spec.lua
+++ b/test/functional/ui/screen_basic_spec.lua
@@ -85,7 +85,7 @@ describe('Screen', function()
it('horizontal', function()
execute('sp')
screen:expect([[
- ^ |
+ ^ |
~ |
~ |
~ |
@@ -106,7 +106,7 @@ describe('Screen', function()
execute('sp')
execute('resize 8')
screen:expect([[
- ^ |
+ ^ |
~ |
~ |
~ |
@@ -126,7 +126,7 @@ describe('Screen', function()
it('horizontal and vertical', function()
execute('sp', 'vsp', 'vsp')
screen:expect([[
- ^ | | |
+ ^ | | |
~ |~ |~ |
~ |~ |~ |
~ |~ |~ |
@@ -143,7 +143,7 @@ describe('Screen', function()
]])
insert('hello')
screen:expect([[
- hell^ |hello |hello |
+ hell^o |hello |hello |
~ |~ |~ |
~ |~ |~ |
~ |~ |~ |
@@ -169,7 +169,7 @@ describe('Screen', function()
execute('sp', 'vsp', 'vsp')
insert('hello')
screen:expect([[
- hell^ |hello |hello |
+ hell^o |hello |hello |
~ |~ |~ |
~ |~ |~ |
~ |~ |~ |
@@ -189,7 +189,7 @@ describe('Screen', function()
feed('h')
screen:expect([[
4+ [No Name] + [No Name] X|
- hell^2 |
+ hell^o2 |
~ |
~ |
~ |
@@ -206,7 +206,7 @@ describe('Screen', function()
execute('tabprevious')
screen:expect([[
4+ [No Name] + [No Name] X|
- hell^ |hello |hello |
+ hell^o |hello |hello |
~ |~ |~ |
~ |~ |~ |
~ |~ |~ |
@@ -229,7 +229,7 @@ describe('Screen', function()
screen:expect([[
line 1 |
line 2 |
- ^ |
+ ^ |
~ |
~ |
~ |
@@ -262,7 +262,7 @@ describe('Screen', function()
~ |
~ |
~ |
- :ls^ |
+ :ls^ |
]])
end)
@@ -282,7 +282,7 @@ describe('Screen', function()
~ |
:ls |
1 %a "[No Name]" line 1 |
- Press ENTER or type command to continue^ |
+ Press ENTER or type command to continue^ |
]])
feed('<cr>') -- skip the "Press ENTER..." state or tests will hang
end)
@@ -312,7 +312,7 @@ describe('Screen', function()
in |in |in |
split |split |split |
windows |windows |windows |
- ^ | | |
+ ^ | | |
[No Name] [+] [No Name] [+] [No Name] [+] |
clearing |
in |
@@ -327,7 +327,7 @@ describe('Screen', function()
it('only affects the current scroll region', function()
feed('6k')
screen:expect([[
- ^crolling |and |and |
+ ^scrolling |and |and |
and |clearing |clearing |
clearing |in |in |
in |split |split |
@@ -349,7 +349,7 @@ describe('Screen', function()
clearing |in |in |
in |split |split |
split |windows |windows |
- windows |^ | |
+ windows |^ | |
[No Name] [+] [No Name] [+] <Name] [+] |
clearing |
in |
@@ -361,7 +361,7 @@ describe('Screen', function()
]])
feed('gg')
screen:expect([[
- scrolling |^nserting |and |
+ scrolling |^Inserting |and |
and |text |clearing |
clearing |with |in |
in |many |split |
@@ -383,7 +383,7 @@ describe('Screen', function()
clearing |lines |in |
in |to |split |
split |test |windows |
- windows |^crolling | |
+ windows |^scrolling | |
[No Name] [+] [No Name] [+] <Name] [+] |
clearing |
in |
@@ -400,7 +400,7 @@ describe('Screen', function()
clearing |test |in |
in |scrolling |split |
split |and |windows |
- windows |^learing | |
+ windows |^clearing | |
[No Name] [+] [No Name] [+] <Name] [+] |
clearing |
in |
@@ -412,7 +412,7 @@ describe('Screen', function()
]])
feed('5k')
screen:expect([[
- scrolling |^ines |and |
+ scrolling |^lines |and |
and |to |clearing |
clearing |test |in |
in |scrolling |split |
@@ -429,7 +429,7 @@ describe('Screen', function()
]])
feed('k')
screen:expect([[
- scrolling |^any |and |
+ scrolling |^many |and |
and |lines |clearing |
clearing |to |in |
in |test |split |
@@ -455,7 +455,7 @@ describe('Screen', function()
it('rebuilds the whole screen', function()
screen:expect([[
- resize^ |
+ resize^ |
~ |
~ |
~ |
@@ -466,13 +466,13 @@ describe('Screen', function()
it('has minimum width/height values', function()
screen:try_resize(1, 1)
screen:expect([[
- -- INS^RT --|
+ -- INS^ERT --|
|
]])
feed('<esc>:ls')
screen:expect([[
resize |
- :ls^ |
+ :ls^ |
]])
end)
end)
diff --git a/test/functional/ui/sign_spec.lua b/test/functional/ui/sign_spec.lua
index a7a4172440..c32a7b9381 100644
--- a/test/functional/ui/sign_spec.lua
+++ b/test/functional/ui/sign_spec.lua
@@ -28,7 +28,7 @@ describe('Signs', function()
>!a |
b |
>>c |
- ^ |
+ ^ |
~ |
~ |
~ |
diff --git a/test/functional/ui/wildmode_spec.lua b/test/functional/ui/wildmode_spec.lua
index ee2f8b15f8..dd2bc84cfa 100644
--- a/test/functional/ui/wildmode_spec.lua
+++ b/test/functional/ui/wildmode_spec.lua
@@ -25,7 +25,7 @@ describe("'wildmode'", function()
~ |
~ |
define jump list > |
- :sign define^ |
+ :sign define^ |
]])
end)
end)
diff --git a/test/unit/preload.lua b/test/unit/preload.lua
new file mode 100644
index 0000000000..d8ec2c3943
--- /dev/null
+++ b/test/unit/preload.lua
@@ -0,0 +1,7 @@
+-- Modules loaded here will not be cleared and reloaded by Busted.
+-- Busted started doing this to help provide more isolation. See issue #62
+-- for more information about this.
+local ffi = require('ffi')
+local helpers = require('test.unit.helpers')
+local lfs = require('lfs')
+local preprocess = require('test.unit.preprocess')