aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Reed <Pyrohh@users.noreply.github.com>2015-07-10 20:57:24 -0400
committerMichael Reed <Pyrohh@users.noreply.github.com>2015-07-10 20:57:24 -0400
commit5fdaac45a60cb555579fd2f10fad7e52c67ae042 (patch)
tree8e2c2535261e76e7bf6ac35d79f667e237f928ea
parent73d9cd85df478e98a5d229087489c808a6fbb9a4 (diff)
parentc51d0e49a93ad442a1537cccdadb84eb3d9a030e (diff)
downloadrneovim-5fdaac45a60cb555579fd2f10fad7e52c67ae042.tar.gz
rneovim-5fdaac45a60cb555579fd2f10fad7e52c67ae042.tar.bz2
rneovim-5fdaac45a60cb555579fd2f10fad7e52c67ae042.zip
Merge pull request #2718 from lucc/test62
[RDY] tests: Migrate legacy test 62. Reviewed-by: Scott Prager <splinterofchaos@gmail.com> Reviewed-by: Justin M. Keyes <justinkz@gmail.com> Reviewed-by: Michael Reed <m.reed@mykolab.com>
-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.lua240
4 files changed, 241 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..6bbb06f9a7
--- /dev/null
+++ b/test/functional/legacy/062_tab_pages_spec.lua
@@ -0,0 +1,240 @@
+-- Tests for tab pages
+
+local helpers = require('test.functional.helpers')
+local feed, insert, source, clear, execute, expect, eval, eq =
+ helpers.feed, helpers.insert, helpers.source, helpers.clear,
+ helpers.execute, helpers.expect, helpers.eval, helpers.eq
+
+describe('tab pages', function()
+ before_each(clear)
+
+ it('can be opened and closed', function()
+ execute('tabnew')
+ eq(2, eval('tabpagenr()'))
+ execute('quit')
+ eq(1, eval('tabpagenr()'))
+ end)
+
+ it('can be iterated with :tabdo', function()
+ source([[
+ 0tabnew
+ 1tabnew
+ $tabnew
+ tabdo call append(line('$'), 'this is tab page ' . tabpagenr())
+ tabclose! 2
+ tabrewind
+ ]])
+ eq('this is tab page 1', eval("getline('$')"))
+ execute('tablast')
+ eq('this is tab page 4', eval("getline('$')"))
+ end)
+
+ it('have local variables accasible with settabvar()/gettabvar()', function()
+ -- 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'])
+ ]])
+
+ eq(100, eval('gettabvar(2, "val_num")'))
+ eq('SetTabVar test', eval('gettabvar(2, "val_str")'))
+ eq({'red', 'blue', 'green'}, eval('gettabvar(2, "val_list")'))
+ execute('tabnext 2')
+ eq(100, eval('t:val_num'))
+ eq('SetTabVar test', eval('t:val_str'))
+ eq({'red', 'blue', 'green'}, eval('t:val_list'))
+ end)
+
+ it('work together with the drop feature and loaded buffers', function()
+ -- Test for ":tab drop exist-file" to keep current window.
+ execute('sp test1')
+ execute('tab drop test1')
+ eq(1, eval('tabpagenr("$")'))
+ eq(2, eval('winnr("$")'))
+ eq(1, eval('winnr()'))
+ end)
+
+ it('work together with the drop feature and new files', function()
+ -- Test for ":tab drop new-file" to keep current window of tabpage 1.
+ execute('split')
+ execute('tab drop newfile')
+ eq(2, eval('tabpagenr("$")'))
+ eq(2, eval('tabpagewinnr(1, "$")'))
+ eq(1, eval('tabpagewinnr(1)'))
+ end)
+
+ it('work together with the drop feature and multi loaded buffers', function()
+ -- Test for ":tab drop multi-opend-file" to keep current tabpage and
+ -- window.
+ execute('new test1')
+ execute('tabnew')
+ execute('new test1')
+ execute('tab drop test1')
+ eq(2, eval('tabpagenr()'))
+ eq(2, eval('tabpagewinnr(2, "$")'))
+ eq(1, eval('tabpagewinnr(2)'))
+ end)
+
+ it('can be navigated with :tabmove', function()
+ execute('lang C')
+ execute('for i in range(9) | tabnew | endfor')
+ feed('1gt')
+ eq(1, eval('tabpagenr()'))
+ execute('tabmove 5')
+ eq(6, eval('tabpagenr()'))
+ execute('tabmove -2')
+ eq(4, eval('tabpagenr()'))
+ execute('tabmove +4')
+ eq(8, eval('tabpagenr()'))
+ execute('tabmove')
+ eq(10, eval('tabpagenr()'))
+ execute('tabmove -20')
+ eq(1, eval('tabpagenr()'))
+ execute('tabmove +20')
+ eq(10, eval('tabpagenr()'))
+ execute('3tabmove')
+ eq(4, eval('tabpagenr()'))
+ execute('7tabmove 5')
+ eq(6, eval('tabpagenr()'))
+ execute('let a="No error caught."')
+ execute('try')
+ execute('tabmove foo')
+ execute('catch E474')
+ execute('let a="E474 caught."')
+ execute('endtry')
+ eq('E474 caught.', eval('a'))
+ end)
+
+ it('can trigger certain autocommands', function()
+ insert('Results:')
+
+ -- Test autocommands.
+ source([[
+ tabonly!
+ let g:r=[]
+ command -nargs=1 -bar C :call add(g:r, '=== '.<q-args>.' ===')|<args>
+ function Test()
+ 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')
+ let t:a='a'
+ C tab split
+ let t:a='b'
+ C tabnew
+ 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
+ let w:a='a'
+ let tabn=tabpagenr()
+ let winr=range(1, winnr('$'))
+ C tabnext 1
+ 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")')))
+ 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('$')]
+ endfunction
+ call Test()
+ $ put =g:r
+ ]])
+
+ -- Assert buffer contents.
+ expect([[
+ Results:
+ === 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)