aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/testdir/Makefile2
-rw-r--r--src/nvim/testdir/test62.in191
-rw-r--r--src/nvim/testdir/test62.ok88
-rw-r--r--test/functional/legacy/062_tab_pages_spec.lua321
4 files changed, 322 insertions, 280 deletions
diff --git a/src/nvim/testdir/Makefile b/src/nvim/testdir/Makefile
index da99c6d1c4..8f3214cc26 100644
--- a/src/nvim/testdir/Makefile
+++ b/src/nvim/testdir/Makefile
@@ -19,7 +19,7 @@ SCRIPTS := test_eval.out \
test46.out test47.out test48.out test49.out \
test52.out test53.out test55.out \
test57.out test58.out test59.out \
- test62.out test63.out test64.out \
+ test63.out test64.out \
test68.out test69.out \
test71.out test73.out \
test79.out test80.out \
diff --git a/src/nvim/testdir/test62.in b/src/nvim/testdir/test62.in
deleted file mode 100644
index c201fe7137..0000000000
--- a/src/nvim/testdir/test62.in
+++ /dev/null
@@ -1,191 +0,0 @@
-Tests for tab pages
-
-STARTTEST
-:so small.vim
-:lang C
-:" Simple test for opening and closing a tab page
-:tabnew
-:let nr = tabpagenr()
-:q
-:call append(line('$'), 'tab page ' . nr)
-:unlet nr
-:"
-:" Open three tab pages and use ":tabdo"
-:0tabnew
-:1tabnew
-:$tabnew
-:tabdo call append(line('$'), 'this is tab page ' . tabpagenr())
-:tabclose! 2
-:tabrewind
-:let line1 = getline('$')
-:undo
-:q
-:tablast
-:let line2 = getline('$')
-:q!
-:call append(line('$'), line1)
-:call append(line('$'), line2)
-:unlet line1 line2
-:"
-:" Test for settabvar() and gettabvar() functions. Open a new tab page and
-:" set 3 variables to a number, string and a list. Verify that the variables
-:" are correctly set.
-:tabnew
-:tabfirst
-:call settabvar(2, 'val_num', 100)
-:call settabvar(2, 'val_str', 'SetTabVar test')
-:call settabvar(2, 'val_list', ['red', 'blue', 'green'])
-:"
-:let test_status = 'gettabvar: fail'
-:if gettabvar(2, 'val_num') == 100 && gettabvar(2, 'val_str') == 'SetTabVar test' && gettabvar(2, 'val_list') == ['red', 'blue', 'green']
-: let test_status = 'gettabvar: pass'
-:endif
-:call append(line('$'), test_status)
-:"
-:tabnext 2
-:let test_status = 'settabvar: fail'
-:if t:val_num == 100 && t:val_str == 'SetTabVar test' && t:val_list == ['red', 'blue', 'green']
-: let test_status = 'settabvar: pass'
-:endif
-:tabclose
-:call append(line('$'), test_status)
-:"
-:if has('gui') || has('clientserver')
-:" Test for ":tab drop exist-file" to keep current window.
-:sp test1
-:tab drop test1
-:let test_status = 'tab drop 1: fail'
-:if tabpagenr('$') == 1 && winnr('$') == 2 && winnr() == 1
-: let test_status = 'tab drop 1: pass'
-:endif
-:close
-:call append(line('$'), test_status)
-:"
-:"
-:" Test for ":tab drop new-file" to keep current window of tabpage 1.
-:split
-:tab drop newfile
-:let test_status = 'tab drop 2: fail'
-:if tabpagenr('$') == 2 && tabpagewinnr(1, '$') == 2 && tabpagewinnr(1) == 1
-: let test_status = 'tab drop 2: pass'
-:endif
-:tabclose
-:q
-:call append(line('$'), test_status)
-:"
-:"
-:" Test for ":tab drop multi-opend-file" to keep current tabpage and window.
-:new test1
-:tabnew
-:new test1
-:tab drop test1
-:let test_status = 'tab drop 3: fail'
-:if tabpagenr() == 2 && tabpagewinnr(2, '$') == 2 && tabpagewinnr(2) == 1
-: let test_status = 'tab drop 3: pass'
-:endif
-:tabclose
-:q
-:call append(line('$'), test_status)
-:else
-:" :drop not supported
-:call append(line('$'), 'tab drop 1: pass')
-:call append(line('$'), 'tab drop 2: pass')
-:call append(line('$'), 'tab drop 3: pass')
-:endif
-:"
-:"
-:for i in range(9) | tabnew | endfor
-1gt
-Go=tabpagenr() 
-:tabmove 5
-i=tabpagenr() 
-:tabmove -2
-i=tabpagenr() 
-:tabmove +4
-i=tabpagenr() 
-:tabmove
-i=tabpagenr() 
-:tabmove -20
-i=tabpagenr() 
-:tabmove +20
-i=tabpagenr() 
-:3tabmove
-i=tabpagenr() 
-:7tabmove 5
-i=tabpagenr() 
-:let a='No error caught.'
-:try
-:tabmove foo
-:catch E474
-:let a='E474 caught.'
-:endtry
-i=a 
-:"
-:" Test autocommands
-:tabonly!
-:let g:r=[]
-:command -nargs=1 -bar C :call add(g:r, '=== ' . <q-args> . ' ===')|<args>
-:function Test()
- let hasau=has('autocmd')
- if hasau
- autocmd TabEnter * :call add(g:r, 'TabEnter')
- autocmd WinEnter * :call add(g:r, 'WinEnter')
- autocmd BufEnter * :call add(g:r, 'BufEnter')
- autocmd TabLeave * :call add(g:r, 'TabLeave')
- autocmd WinLeave * :call add(g:r, 'WinLeave')
- autocmd BufLeave * :call add(g:r, 'BufLeave')
- endif
- let t:a='a'
- C tab split
- if !hasau
- let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
- endif
- let t:a='b'
- C tabnew
- if !hasau
- let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufLeave', 'BufEnter']
- endif
- let t:a='c'
- call add(g:r, join(map(range(1, tabpagenr('$')), 'gettabvar(v:val, "a")')))
- C call map(range(1, tabpagenr('$')), 'settabvar(v:val, ''a'', v:val*2)')
- call add(g:r, join(map(range(1, tabpagenr('$')), 'gettabvar(v:val, "a")')))
- let w:a='a'
- C vsplit
- if !hasau
- let g:r+=['WinLeave', 'WinEnter']
- endif
- let w:a='a'
- let tabn=tabpagenr()
- let winr=range(1, winnr('$'))
- C tabnext 1
- if !hasau
- let g:r+=['BufLeave', 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufEnter']
- endif
- call add(g:r, join(map(copy(winr), 'gettabwinvar('.tabn.', v:val, "a")')))
- C call map(copy(winr), 'settabwinvar('.tabn.', v:val, ''a'', v:val*2)')
- call add(g:r, join(map(copy(winr), 'gettabwinvar('.tabn.', v:val, "a")')))
- if hasau
- augroup TabDestructive
- autocmd TabEnter * :C tabnext 2 | C tabclose 3
- augroup END
- C tabnext 3
- let g:r+=[tabpagenr().'/'.tabpagenr('$')]
- autocmd! TabDestructive TabEnter
- C tabnew
- C tabnext 1
- autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3
- C tabnext 3
- let g:r+=[tabpagenr().'/'.tabpagenr('$')]
- else
- let g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
- endif
-endfunction
-:call Test()
-:$ put =g:r
-:"
-:"
-:/^Results/,$w! test.out
-:qa!
-ENDTEST
-
-Results:
diff --git a/src/nvim/testdir/test62.ok b/src/nvim/testdir/test62.ok
deleted file mode 100644
index e35b2b1c67..0000000000
--- a/src/nvim/testdir/test62.ok
+++ /dev/null
@@ -1,88 +0,0 @@
-Results:
-tab page 2
-this is tab page 3
-this is tab page 1
-this is tab page 4
-gettabvar: pass
-settabvar: pass
-tab drop 1: pass
-tab drop 2: pass
-tab drop 3: pass
-1
-6
-4
-8
-10
-1
-10
-4
-6
-E474 caught.
-=== tab split ===
-WinLeave
-TabLeave
-WinEnter
-TabEnter
-=== tabnew ===
-WinLeave
-TabLeave
-WinEnter
-TabEnter
-BufLeave
-BufEnter
-a b c
-=== call map(range(1, tabpagenr('$')), 'settabvar(v:val, ''a'', v:val*2)') ===
-2 4 6
-=== vsplit ===
-WinLeave
-WinEnter
-=== tabnext 1 ===
-BufLeave
-WinLeave
-TabLeave
-WinEnter
-TabEnter
-BufEnter
-a a
-=== call map(copy(winr), 'settabwinvar('.tabn.', v:val, ''a'', v:val*2)') ===
-2 4
-=== tabnext 3 ===
-BufLeave
-WinLeave
-TabLeave
-WinEnter
-TabEnter
-=== tabnext 2 ===
-=== tabclose 3 ===
-2/2
-=== tabnew ===
-WinLeave
-TabLeave
-WinEnter
-TabEnter
-BufLeave
-BufEnter
-=== tabnext 1 ===
-BufLeave
-WinLeave
-TabLeave
-WinEnter
-TabEnter
-BufEnter
-=== tabnext 3 ===
-BufLeave
-WinLeave
-TabLeave
-WinEnter
-TabEnter
-=== tabnext 2 ===
-BufLeave
-WinLeave
-TabLeave
-WinEnter
-TabEnter
-=== tabnext 2 ===
-=== tabclose 3 ===
-BufEnter
-=== tabclose 3 ===
-2/2
diff --git a/test/functional/legacy/062_tab_pages_spec.lua b/test/functional/legacy/062_tab_pages_spec.lua
new file mode 100644
index 0000000000..8a3b47de46
--- /dev/null
+++ b/test/functional/legacy/062_tab_pages_spec.lua
@@ -0,0 +1,321 @@
+-- Tests for tab pages
+
+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('tab pages', function()
+ setup(clear)
+
+ it('is working', function()
+ insert([=[
+ Results:]=])
+
+ execute('lang C')
+
+ -- Simple test for opening and closing a tab page.
+ source([[
+ tabnew
+ let nr = tabpagenr()
+ q
+ call append(line('$'), 'tab page ' . nr)
+ unlet nr
+ ]])
+
+ -- Open three tab pages and use ":tabdo".
+ source([[
+ 0tabnew
+ 1tabnew
+ $tabnew
+ tabdo call append(line('$'), 'this is tab page ' . tabpagenr())
+ tabclose! 2
+ tabrewind
+ let line1 = getline('$')
+ undo
+ q
+ tablast
+ let line2 = getline('$')
+ q!
+ call append(line('$'), line1)
+ call append(line('$'), line2)
+ unlet line1 line2
+ ]])
+
+ -- Test for settabvar() and gettabvar() functions. Open a new tab page and
+ -- set 3 variables to a number, string and a list. Verify that the
+ -- variables are correctly set.
+ source([=[
+ tabnew
+ tabfirst
+ call settabvar(2, 'val_num', 100)
+ call settabvar(2, 'val_str', 'SetTabVar test')
+ call settabvar(2, 'val_list', ['red', 'blue', 'green'])
+
+ let test_status = 'gettabvar: fail'
+ if gettabvar(2, 'val_num') == 100 &&
+ \ gettabvar(2, 'val_str') == 'SetTabVar test' &&
+ \ gettabvar(2, 'val_list') == ['red', 'blue', 'green']
+ let test_status = 'gettabvar: pass'
+ endif
+ call append(line('$'), test_status)
+
+ tabnext 2
+ let test_status = 'settabvar: fail'
+ if t:val_num == 100 &&
+ \ t:val_str == 'SetTabVar test' &&
+ \ t:val_list == ['red', 'blue', 'green']
+ let test_status = 'settabvar: pass'
+ endif
+ tabclose
+ call append(line('$'), test_status)
+ ]=])
+
+ -- Test some drop features
+ source([[
+ " Test for ":tab drop exist-file" to keep current window.
+ sp test1
+ tab drop test1
+ let test_status = 'tab drop 1: fail'
+ if tabpagenr('$') == 1 && winnr('$') == 2 && winnr() == 1
+ let test_status = 'tab drop 1: pass'
+ endif
+ close
+ call append(line('$'), test_status)
+
+ " Test for ":tab drop new-file" to keep current window of tabpage 1.
+ split
+ tab drop newfile
+ let test_status = 'tab drop 2: fail'
+ if tabpagenr('$') == 2 &&
+ \ tabpagewinnr(1, '$') == 2 &&
+ \ tabpagewinnr(1) == 1
+ let test_status = 'tab drop 2: pass'
+ endif
+ tabclose
+ q
+ call append(line('$'), test_status)
+
+ " Test for ":tab drop multi-opend-file" to keep current tabpage and
+ " window.
+ new test1
+ tabnew
+ new test1
+ tab drop test1
+ let test_status = 'tab drop 3: fail'
+ if tabpagenr() == 2 &&
+ \ tabpagewinnr(2, '$') == 2 &&
+ \ tabpagewinnr(2) == 1
+ let test_status = 'tab drop 3: pass'
+ endif
+ tabclose
+ q
+ call append(line('$'), test_status)
+ ]])
+-------
+
+ execute('for i in range(9) | tabnew | endfor')
+ feed('1gt')
+ feed('Go<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute('tabmove 5')
+ feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute('tabmove -2')
+ feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute('tabmove +4')
+ feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute('tabmove')
+ feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute('tabmove -20')
+ feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute('tabmove +20')
+ feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute('3tabmove')
+ feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute('7tabmove 5')
+ feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute([[let a='No error caught.']])
+ execute('try')
+ execute('tabmove foo')
+ execute('catch E474')
+ execute([[let a='E474 caught.']])
+ execute('endtry')
+ feed('i<C-R>=a<C-M><esc>')
+
+ -- Test autocommands.
+ source([=[
+ tabonly!
+ let g:r=[]
+ command -nargs=1 -bar C :call add(g:r, '=== '.<q-args>.' ===')|<args>
+ function Test()
+ let hasau=has('autocmd')
+ if hasau
+ autocmd TabEnter * :call add(g:r, 'TabEnter')
+ autocmd WinEnter * :call add(g:r, 'WinEnter')
+ autocmd BufEnter * :call add(g:r, 'BufEnter')
+ autocmd TabLeave * :call add(g:r, 'TabLeave')
+ autocmd WinLeave * :call add(g:r, 'WinLeave')
+ autocmd BufLeave * :call add(g:r, 'BufLeave')
+ endif
+ let t:a='a'
+ C tab split
+ if !hasau
+ let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
+ endif
+ let t:a='b'
+ C tabnew
+ if !hasau
+ let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter',
+ \ 'BufLeave', 'BufEnter']
+ endif
+ let t:a='c'
+ call add(g:r, join(map(range(1, tabpagenr('$')),
+ \ 'gettabvar(v:val, "a")')))
+ C call map(range(1, tabpagenr('$')),
+ \ 'settabvar(v:val, ''a'', v:val*2)')
+ call add(g:r, join(map(range(1, tabpagenr('$')),
+ \ 'gettabvar(v:val, "a")')))
+ let w:a='a'
+ C vsplit
+ if !hasau
+ let g:r+=['WinLeave', 'WinEnter']
+ endif
+ let w:a='a'
+ let tabn=tabpagenr()
+ let winr=range(1, winnr('$'))
+ C tabnext 1
+ if !hasau
+ let g:r+=['BufLeave', 'WinLeave', 'TabLeave', 'WinEnter',
+ \ 'TabEnter', 'BufEnter']
+ endif
+ call add(g:r, join(map(copy(winr),
+ \ 'gettabwinvar('.tabn.', v:val, "a")')))
+ C call map(copy(winr),
+ \ 'settabwinvar('.tabn.', v:val, ''a'', v:val*2)')
+ call add(g:r, join(map(copy(winr),
+ \ 'gettabwinvar('.tabn.', v:val, "a")')))
+ if hasau
+ augroup TabDestructive
+ autocmd TabEnter * :C tabnext 2 | C tabclose 3
+ augroup END
+ C tabnext 3
+ let g:r+=[tabpagenr().'/'.tabpagenr('$')]
+ autocmd! TabDestructive TabEnter
+ C tabnew
+ C tabnext 1
+ autocmd TabDestructive TabEnter * nested
+ \ :C tabnext 2 | C tabclose 3
+ C tabnext 3
+ let g:r+=[tabpagenr().'/'.tabpagenr('$')]
+ else
+ let g:r+=["=== tabnext 3 ===", "BufLeave", "WinLeave",
+ \ "TabLeave", "WinEnter", "TabEnter", "=== tabnext 2 ===",
+ \ "=== tabclose 3 ===", "2/2", "=== tabnew ===", "WinLeave",
+ \ "TabLeave", "WinEnter", "TabEnter", "BufLeave", "BufEnter",
+ \ "=== tabnext 1 ===", "BufLeave", "WinLeave", "TabLeave",
+ \ "WinEnter", "TabEnter", "BufEnter", "=== tabnext 3 ===",
+ \ "BufLeave", "WinLeave", "TabLeave", "WinEnter", "TabEnter",
+ \ "=== tabnext 2 ===", "BufLeave", "WinLeave", "TabLeave",
+ \ "WinEnter", "TabEnter", "=== tabnext 2 ===",
+ \ "=== tabclose 3 ===", "BufEnter", "=== tabclose 3 ===",
+ \ "2/2"]
+ endif
+ endfunction
+ call Test()
+ $ put =g:r
+ ]=])
+
+
+ --execute('0,/^Results/-1 d')
+ --execute('qa!')
+
+ -- Assert buffer contents.
+ expect([=[
+ Results:
+ tab page 2
+ this is tab page 3
+ this is tab page 1
+ this is tab page 4
+ gettabvar: pass
+ settabvar: pass
+ tab drop 1: pass
+ tab drop 2: pass
+ tab drop 3: pass
+ 1
+ 6
+ 4
+ 8
+ 10
+ 1
+ 10
+ 4
+ 6
+ E474 caught.
+ === tab split ===
+ WinLeave
+ TabLeave
+ WinEnter
+ TabEnter
+ === tabnew ===
+ WinLeave
+ TabLeave
+ WinEnter
+ TabEnter
+ BufLeave
+ BufEnter
+ a b c
+ === call map(range(1, tabpagenr('$')), 'settabvar(v:val, ''a'', v:val*2)') ===
+ 2 4 6
+ === vsplit ===
+ WinLeave
+ WinEnter
+ === tabnext 1 ===
+ BufLeave
+ WinLeave
+ TabLeave
+ WinEnter
+ TabEnter
+ BufEnter
+ a a
+ === call map(copy(winr), 'settabwinvar('.tabn.', v:val, ''a'', v:val*2)') ===
+ 2 4
+ === tabnext 3 ===
+ BufLeave
+ WinLeave
+ TabLeave
+ WinEnter
+ TabEnter
+ === tabnext 2 ===
+ === tabclose 3 ===
+ 2/2
+ === tabnew ===
+ WinLeave
+ TabLeave
+ WinEnter
+ TabEnter
+ BufLeave
+ BufEnter
+ === tabnext 1 ===
+ BufLeave
+ WinLeave
+ TabLeave
+ WinEnter
+ TabEnter
+ BufEnter
+ === tabnext 3 ===
+ BufLeave
+ WinLeave
+ TabLeave
+ WinEnter
+ TabEnter
+ === tabnext 2 ===
+ BufLeave
+ WinLeave
+ TabLeave
+ WinEnter
+ TabEnter
+ === tabnext 2 ===
+ === tabclose 3 ===
+ BufEnter
+ === tabclose 3 ===
+ 2/2]=])
+ end)
+end)