aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/testdir/test_mksession.vim
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/testdir/test_mksession.vim')
-rw-r--r--src/nvim/testdir/test_mksession.vim1027
1 files changed, 0 insertions, 1027 deletions
diff --git a/src/nvim/testdir/test_mksession.vim b/src/nvim/testdir/test_mksession.vim
deleted file mode 100644
index 972397cb91..0000000000
--- a/src/nvim/testdir/test_mksession.vim
+++ /dev/null
@@ -1,1027 +0,0 @@
-" Test for :mksession, :mkview and :loadview in latin1 encoding
-
-scriptencoding latin1
-
-source check.vim
-CheckFeature mksession
-
-source shared.vim
-source term_util.vim
-
-" Test for storing global and local argument list in a session file
-" This one must be done first.
-func Test__mksession_arglocal()
- enew | only
- n a b c
- new
- arglocal
- mksession! Xtest_mks.out
-
- %bwipe!
- %argdelete
- argglobal
- source Xtest_mks.out
- call assert_equal(2, winnr('$'))
- call assert_equal(2, arglistid(1))
- call assert_equal(0, arglistid(2))
-
- %bwipe!
- %argdelete
- argglobal
- call delete('Xtest_mks.out')
-endfunc
-
-func Test_mksession()
- tabnew
- let wrap_save = &wrap
- set sessionoptions=buffers splitbelow fileencoding=latin1
- call setline(1, [
- \ 'start:',
- \ 'no multibyte chAracter',
- \ ' one leaDing tab',
- \ ' four leadinG spaces',
- \ 'two consecutive tabs',
- \ 'two tabs in one line',
- \ 'one ä multibyteCharacter',
- \ 'aä Ä two multiByte characters',
- \ 'Aäöü three mulTibyte characters',
- \ 'short line',
- \ ])
- let tmpfile = 'Xtemp'
- exec 'w! ' . tmpfile
- /^start:
- set wrap
- vsplit
- norm! j16|
- split
- norm! j16|
- split
- norm! j16|
- split
- norm! j8|
- split
- norm! j8|
- split
- norm! j16|
- split
- norm! j16|
- split
- norm! j16|
- split
- norm! j$
- wincmd l
-
- set nowrap
- /^start:
- norm! j16|3zl
- split
- norm! j016|3zl
- split
- norm! j016|3zl
- split
- norm! j08|3zl
- split
- norm! j08|3zl
- split
- norm! j016|3zl
- split
- norm! j016|3zl
- split
- norm! j016|3zl
- split
- call wincol()
- mksession! Xtest_mks.out
- let li = filter(readfile('Xtest_mks.out'), 'v:val =~# "\\(^ *normal! [0$]\\|^ *exe ''normal!\\)"')
- let expected = [
- \ 'normal! 016|',
- \ 'normal! 016|',
- \ 'normal! 016|',
- \ 'normal! 08|',
- \ 'normal! 08|',
- \ 'normal! 016|',
- \ 'normal! 016|',
- \ 'normal! 016|',
- \ 'normal! $',
- \ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
- \ " normal! 016|",
- \ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
- \ " normal! 016|",
- \ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
- \ " normal! 016|",
- \ " exe 'normal! ' . s:c . '|zs' . 8 . '|'",
- \ " normal! 08|",
- \ " exe 'normal! ' . s:c . '|zs' . 8 . '|'",
- \ " normal! 08|",
- \ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
- \ " normal! 016|",
- \ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
- \ " normal! 016|",
- \ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
- \ " normal! 016|",
- \ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
- \ " normal! 016|"
- \ ]
- call assert_equal(expected, li)
- tabclose!
-
- call delete('Xtest_mks.out')
- call delete(tmpfile)
- let &wrap = wrap_save
- set sessionoptions&
-endfunc
-
-func Test_mksession_winheight()
- new
- set winheight=10
- set winminheight=2
- mksession! Xtest_mks.out
- source Xtest_mks.out
-
- call delete('Xtest_mks.out')
-endfunc
-
-func Test_mksession_large_winheight()
- set winheight=999
- mksession! Xtest_mks_winheight.out
- set winheight&
- source Xtest_mks_winheight.out
- call delete('Xtest_mks_winheight.out')
-endfunc
-
-func Test_mksession_zero_winheight()
- set winminheight=0
- edit SomeFile
- split
- wincmd _
- mksession! Xtest_mks_zero
- set winminheight&
- let text = readfile('Xtest_mks_zero')->join()
- call delete('Xtest_mks_zero')
- close
- " check there is no divide by zero
- call assert_notmatch('/ 0[^0-9]', text)
-endfunc
-
-func Test_mksession_rtp()
- if has('win32')
- " TODO: fix problem with backslashes
- return
- endif
- new
- set sessionoptions+=options
- let _rtp=&rtp
- " Make a real long (invalid) runtimepath value,
- " that should exceed PATH_MAX (hopefully)
- let newrtp=&rtp.',~'.repeat('/foobar', 1000)
- let newrtp.=",".expand("$HOME")."/.vim"
- let &rtp=newrtp
-
- " determine expected value
- let expected=split(&rtp, ',')
- let expected = map(expected, '"set runtimepath+=".v:val')
- let expected = ['set runtimepath='] + expected
- let expected = map(expected, {v,w -> substitute(w, $HOME, "~", "g")})
-
- mksession! Xtest_mks.out
- let &rtp=_rtp
- let li = filter(readfile('Xtest_mks.out'), 'v:val =~# "runtimepath"')
- call assert_equal(expected, li)
-
- call delete('Xtest_mks.out')
- set sessionoptions&
-endfunc
-
-func Test_mksession_arglist()
- %argdel
- next file1 file2 file3 file4
- new
- next | next
- mksession! Xtest_mks.out
- source Xtest_mks.out
- call assert_equal(['file1', 'file2', 'file3', 'file4'], argv())
- call assert_equal(2, argidx())
- wincmd w
- call assert_equal(0, argidx())
-
- call delete('Xtest_mks.out')
- enew | only
- argdel *
-endfunc
-
-
-func Test_mksession_one_buffer_two_windows()
- edit Xtest1
- new Xtest2
- split
- mksession! Xtest_mks.out
- let lines = readfile('Xtest_mks.out')
- let count1 = 0
- let count2 = 0
- let count2buf = 0
- let bufexists = 0
- for line in lines
- if line =~ 'edit \f*Xtest1$'
- let count1 += 1
- endif
- if line =~ 'edit \f\{-}Xtest2'
- let count2 += 1
- endif
- if line =~ 'buffer \f\{-}Xtest2'
- let count2buf += 1
- endif
- if line =~ 'bufexists(fnamemodify(.*, ":p")'
- let bufexists += 1
- endif
- endfor
- call assert_equal(1, count1, 'Xtest1 count')
- call assert_equal(2, count2, 'Xtest2 count')
- call assert_equal(2, count2buf, 'Xtest2 buffer count')
- call assert_equal(2, bufexists)
-
- close
- bwipe!
- call delete('Xtest_mks.out')
-endfunc
-
-func Test_mksession_lcd_multiple_tabs()
- tabnew
- tabnew
- lcd .
- tabfirst
- lcd .
- mksession! Xtest_mks.out
- tabonly
- source Xtest_mks.out
- call assert_true(haslocaldir(), 'Tab 1 localdir')
- tabnext 2
- call assert_true(!haslocaldir(), 'Tab 2 localdir')
- tabnext 3
- call assert_true(haslocaldir(), 'Tab 3 localdir')
- call delete('Xtest_mks.out')
-endfunc
-
-func Test_mksession_blank_tabs()
- tabnew
- tabnew
- tabnew
- tabnext 3
- mksession! Xtest_mks.out
- tabnew
- tabnew
- tabnext 2
- source Xtest_mks.out
- call assert_equal(4, tabpagenr('$'), 'session restore should restore number of tabs')
- call assert_equal(3, tabpagenr(), 'session restore should restore the active tab')
- call delete('Xtest_mks.out')
-endfunc
-
-func Test_mksession_blank_windows()
- split
- split
- split
- 3 wincmd w
- mksession! Xtest_mks.out
- split
- split
- 2 wincmd w
- source Xtest_mks.out
- call assert_equal(4, winnr('$'), 'session restore should restore number of windows')
- call assert_equal(3, winnr(), 'session restore should restore the active window')
- call delete('Xtest_mks.out')
-endfunc
-
-func Test_mksession_buffer_count()
- set hidden
-
- " Edit exactly three files in the current session.
- %bwipe!
- e Xfoo | tabe Xbar | tabe Xbaz
- tabdo write
- mksession! Xtest_mks.out
-
- " Verify that loading the session does not create additional buffers.
- %bwipe!
- source Xtest_mks.out
- call assert_equal(3, len(getbufinfo()))
-
- " Clean up.
- call delete('Xfoo')
- call delete('Xbar')
- call delete('Xbaz')
- call delete('Xtest_mks.out')
- %bwipe!
- set nohidden
-endfunc
-
-func Test_mksession_buffer_order()
- %bwipe!
- e Xfoo | e Xbar | e Xbaz | e Xqux
- bufdo write
- mksession! Xtest_mks.out
-
- " Verify that loading the session preserves order of buffers
- %bwipe!
- source Xtest_mks.out
-
- let s:buf_info = getbufinfo()
- call assert_true(s:buf_info[0]['name'] =~# 'Xfoo$')
- call assert_true(s:buf_info[1]['name'] =~# 'Xbar$')
- call assert_true(s:buf_info[2]['name'] =~# 'Xbaz$')
- call assert_true(s:buf_info[3]['name'] =~# 'Xqux$')
-
- " Clean up.
- call delete('Xfoo')
- call delete('Xbar')
- call delete('Xbaz')
- call delete('Xqux')
- call delete('Xtest_mks.out')
- %bwipe!
-endfunc
-
-if has('extra_search')
-
-func Test_mksession_hlsearch()
- set sessionoptions+=options
- set hlsearch
- mksession! Xtest_mks.out
- nohlsearch
- source Xtest_mks.out
- call assert_equal(1, v:hlsearch, 'session should restore search highlighting state')
- nohlsearch
- mksession! Xtest_mks.out
- source Xtest_mks.out
- call assert_equal(0, v:hlsearch, 'session should restore search highlighting state')
- set sessionoptions&
- call delete('Xtest_mks.out')
-endfunc
-
-endif
-
-func Test_mkview_open_folds()
- enew!
-
- call append(0, ['a', 'b', 'c'])
- 1,3fold
- write! Xtestfile
-
- call assert_notequal(-1, foldclosed(1))
- call assert_notequal(-1, foldclosed(2))
- call assert_notequal(-1, foldclosed(3))
-
- " Save the view with folds closed
- mkview! Xtestview
-
- " zR affects 'foldlevel', make sure the option is applied after the folds
- " have been recreated.
- " Open folds to ensure they get closed when restoring the view
- normal zR
-
- call assert_equal(-1, foldclosed(1))
- call assert_equal(-1, foldclosed(2))
- call assert_equal(-1, foldclosed(3))
-
- source Xtestview
-
- call assert_notequal(-1, foldclosed(1))
- call assert_notequal(-1, foldclosed(2))
- call assert_notequal(-1, foldclosed(3))
-
- call delete('Xtestview')
- call delete('Xtestfile')
- %bwipe
-endfunc
-
-func Test_mkview_no_balt()
- edit Xtestfile1
- edit Xtestfile2
-
- mkview! Xtestview
- bdelete Xtestfile1
-
- source Xtestview
- call assert_equal(0, buflisted('Xtestfile1'))
-
- call delete('Xtestview')
- %bwipe
-endfunc
-
-func Test_mksession_no_balt()
- edit Xtestfile1
- edit Xtestfile2
-
- bdelete Xtestfile1
- mksession! Xtestview
-
- source Xtestview
- call assert_equal(0, buflisted('Xtestfile1'))
-
- call delete('Xtestview')
- %bwipe
-endfunc
-
-" Test :mkview with a file argument.
-func Test_mkview_file()
- " Create a view with line number and a fold.
- help :mkview
- set number
- norm! V}zf0
- let pos = getpos('.')
- let linefoldclosed1 = foldclosed('.')
- mkview! Xview
- set nonumber
- norm! zrj
- " We can close the help window, as mkview with a file name should
- " generate a command to edit the file.
- helpclose
-
- source Xview
- call assert_equal(1, &number)
- call assert_match('\*:mkview\*$', getline('.'))
- call assert_equal(pos, getpos('.'))
- call assert_equal(linefoldclosed1, foldclosed('.'))
-
- " Creating a view again with the same file name should fail (file
- " already exists). But with a !, the previous view should be
- " overwritten without error.
- help :loadview
- call assert_fails('mkview Xview', 'E189:')
- call assert_match('\*:loadview\*$', getline('.'))
- mkview! Xview
- call assert_match('\*:loadview\*$', getline('.'))
-
- call delete('Xview')
- bwipe
-endfunc
-
-" Test :mkview and :loadview with a custom 'viewdir'.
-func Test_mkview_loadview_with_viewdir()
- set viewdir=Xviewdir
-
- help :mkview
- set number
- norm! V}zf
- let pos = getpos('.')
- let linefoldclosed1 = foldclosed('.')
- mkview 1
- set nonumber
- norm! zrj
-
- loadview 1
-
- " The directory Xviewdir/ should have been created and the view
- " should be stored in that directory.
- call assert_equal('Xviewdir/' .
- \ substitute(
- \ substitute(
- \ expand('%:p'), '/', '=+', 'g'), ':', '=-', 'g') . '=1.vim',
- \ glob('Xviewdir/*'))
- call assert_equal(1, &number)
- call assert_match('\*:mkview\*$', getline('.'))
- call assert_equal(pos, getpos('.'))
- call assert_equal(linefoldclosed1, foldclosed('.'))
-
- call delete('Xviewdir', 'rf')
- set viewdir&
- helpclose
-endfunc
-
-func Test_mkview_no_file_name()
- new
- " :mkview or :mkview {nr} should fail in a unnamed buffer.
- call assert_fails('mkview', 'E32:')
- call assert_fails('mkview 1', 'E32:')
-
- " :mkview {file} should succeed in a unnamed buffer.
- mkview Xview
- help
- source Xview
- call assert_equal('', bufname('%'))
-
- call delete('Xview')
- %bwipe
-endfunc
-
-func Test_mkview_loadview_jumplist()
- set viewdir=Xviewdir
- au BufWinLeave * silent mkview
- " au BufWinEnter * silent loadview
-
- edit Xfile1
- call setline(1, ['a', 'bbbbbbb', 'c'])
- normal j3l
- call assert_equal([2, 4], getcurpos()[1:2])
- write
-
- edit Xfile2
- call setline(1, ['d', 'eeeeeee', 'f'])
- normal j5l
- call assert_equal([2, 6], getcurpos()[1:2])
- write
-
- edit Xfile3
- call setline(1, ['g', 'h', 'iiiii'])
- normal jj3l
- call assert_equal([3, 4], getcurpos()[1:2])
- write
-
- " The commented :au above was moved here so that :mkview (on BufWinLeave) can
- " run before :loadview. This is needed because Nvim's :loadview raises E484 if
- " the view can't be opened, while Vim's silently fails instead.
- au BufWinEnter * silent loadview
-
- edit Xfile1
- call assert_equal([2, 4], getcurpos()[1:2])
- edit Xfile2
- call assert_equal([2, 6], getcurpos()[1:2])
- edit Xfile3
- call assert_equal([3, 4], getcurpos()[1:2])
-
- exe "normal \<C-O>"
- call assert_equal('Xfile2', expand('%'))
- call assert_equal([2, 6], getcurpos()[1:2])
- exe "normal \<C-O>"
- call assert_equal('Xfile1', expand('%'))
- call assert_equal([2, 4], getcurpos()[1:2])
-
- au! BufWinLeave
- au! BufWinEnter
- bwipe!
- call delete('Xviewdir', 'rf')
- call delete('Xfile1')
- call delete('Xfile2')
- call delete('Xfile3')
- set viewdir&
-endfunc
-
-" A clean session (one empty buffer, one window, and one tab) should not
-" set any error messages when sourced because no commands should fail.
-func Test_mksession_no_errmsg()
- let v:errmsg = ''
- %bwipe!
- mksession! Xtest_mks.out
- source Xtest_mks.out
- call assert_equal('', v:errmsg)
- call delete('Xtest_mks.out')
-endfunc
-
-func Test_mksession_quote_in_filename()
- if !has('unix')
- " only Unix can handle this weird filename
- return
- endif
- let v:errmsg = ''
- let filename = has('win32') ? 'x''y' : 'x''y"z'
- %bwipe!
- split another
- execute 'split' escape(filename, '"')
- mksession! Xtest_mks_quoted.out
- %bwipe!
- source Xtest_mks_quoted.out
- call assert_true(bufexists(filename))
-
- %bwipe!
- call delete('Xtest_mks_quoted.out')
-endfunc
-
-" Test for storing global variables in a session file
-func Test_mksession_globals()
- set sessionoptions+=globals
-
- " create different global variables
- let g:Global_string = "Sun is shining\r\n"
- let g:Global_count = 100
- let g:Global_pi = 3.14
- let g:Global_neg_float = -2.68
-
- mksession! Xtest_mks.out
-
- unlet g:Global_string
- unlet g:Global_count
- unlet g:Global_pi
- unlet g:Global_neg_float
-
- source Xtest_mks.out
- call assert_equal("Sun is shining\r\n", g:Global_string)
- call assert_equal(100, g:Global_count)
- call assert_equal(3.14, g:Global_pi)
- call assert_equal(-2.68, g:Global_neg_float)
-
- unlet g:Global_string
- unlet g:Global_count
- unlet g:Global_pi
- unlet g:Global_neg_float
- call delete('Xtest_mks.out')
- set sessionoptions&
-endfunc
-
-" Test for changing backslash to forward slash in filenames
-func Test_mksession_slash()
- if exists('+shellslash')
- throw 'Skipped: cannot use backslash in file name'
- endif
- enew
- %bwipe!
- e a\\b\\c
- mksession! Xtest_mks1.out
- set sessionoptions+=slash
- mksession! Xtest_mks2.out
-
- %bwipe!
- source Xtest_mks1.out
- call assert_equal('a/b/c', bufname(''))
- %bwipe!
- source Xtest_mks2.out
- call assert_equal('a/b/c', bufname(''))
-
- %bwipe!
- call delete('Xtest_mks1.out')
- call delete('Xtest_mks2.out')
- set sessionoptions&
-endfunc
-
-" Test for changing directory to the session file directory
-func Test_mksession_sesdir()
- call mkdir('Xproj')
- mksession! Xproj/Xtest_mks1.out
- set sessionoptions-=curdir
- set sessionoptions+=sesdir
- mksession! Xproj/Xtest_mks2.out
-
- source Xproj/Xtest_mks1.out
- call assert_equal('testdir', fnamemodify(getcwd(), ':t'))
- source Xproj/Xtest_mks2.out
- call assert_equal('Xproj', fnamemodify(getcwd(), ':t'))
- cd ..
-
- set sessionoptions&
- call delete('Xproj', 'rf')
-endfunc
-
-" Test for storing the 'lines' and 'columns' settings
-func Test_mksession_resize()
- mksession! Xtest_mks1.out
- set sessionoptions+=resize
- mksession! Xtest_mks2.out
-
- let lines = readfile('Xtest_mks1.out')
- let found_resize = v:false
- for line in lines
- if line =~ '^set lines='
- let found_resize = v:true
- break
- endif
- endfor
- call assert_false(found_resize)
- let lines = readfile('Xtest_mks2.out')
- let found_resize = v:false
- for line in lines
- if line =~ '^set lines='
- let found_resize = v:true
- break
- endif
- endfor
- call assert_true(found_resize)
-
- call delete('Xtest_mks1.out')
- call delete('Xtest_mks2.out')
- set sessionoptions&
-endfunc
-
-" Test for mksession with a named scratch buffer
-func Test_mksession_scratch()
- set sessionoptions+=options
- enew | only
- file Xscratch
- set buftype=nofile
- mksession! Xtest_mks.out
- %bwipe
- source Xtest_mks.out
- call assert_equal('Xscratch', bufname(''))
- call assert_equal('nofile', &buftype)
- %bwipe
- call delete('Xtest_mks.out')
- set sessionoptions&
-endfunc
-
-" Test for mksession with fold options
-func Test_mksession_foldopt()
- set sessionoptions-=options
- set sessionoptions+=folds
- new
- setlocal foldenable
- setlocal foldmethod=expr
- setlocal foldmarker=<<<,>>>
- setlocal foldignore=%
- setlocal foldlevel=2
- setlocal foldminlines=10
- setlocal foldnestmax=15
- mksession! Xtest_mks.out
- close
- %bwipe
-
- source Xtest_mks.out
- call assert_true(&foldenable)
- call assert_equal('expr', &foldmethod)
- call assert_equal('<<<,>>>', &foldmarker)
- call assert_equal('%', &foldignore)
- call assert_equal(2, &foldlevel)
- call assert_equal(10, &foldminlines)
- call assert_equal(15, &foldnestmax)
-
- close
- %bwipe
- set sessionoptions&
-endfunc
-
-" Test for mksession with "help" but not "options" in 'sessionoptions'
-func Test_mksession_help_noopt()
- set sessionoptions-=options
- set sessionoptions+=help
- help
- let fname = expand('%')
- mksession! Xtest_mks.out
- bwipe
-
- source Xtest_mks.out
- call assert_equal('help', &buftype)
- call assert_equal('help', &filetype)
- call assert_equal(fname, expand('%'))
- call assert_false(&modifiable)
- call assert_true(&readonly)
-
- helpclose
- help index
- let fname = expand('%')
- mksession! Xtest_mks.out
- bwipe
-
- source Xtest_mks.out
- call assert_equal('help', &buftype)
- call assert_equal(fname, expand('%'))
-
- call delete('Xtest_mks.out')
- set sessionoptions&
-endfunc
-
-" Test for mksession with window position
-func Test_mksession_winpos()
- if !has('gui_running')
- " Only applicable in GUI Vim
- return
- endif
- set sessionoptions+=winpos
- mksession! Xtest_mks.out
- let found_winpos = v:false
- let lines = readfile('Xtest_mks.out')
- for line in lines
- if line =~ '^winpos '
- let found_winpos = v:true
- break
- endif
- endfor
- call assert_true(found_winpos)
- call delete('Xtest_mks.out')
- set sessionoptions&
-endfunc
-
-" Test for mksession without options restores winminheight
-func Test_mksession_winminheight()
- set sessionoptions-=options
- split
- mksession! Xtest_mks.out
- let found_restore = 0
- let lines = readfile('Xtest_mks.out')
- for line in lines
- if line =~ '= s:save_winmin\(width\|height\)'
- let found_restore += 1
- endif
- endfor
- call assert_equal(2, found_restore)
- call delete('Xtest_mks.out')
- close
- set sessionoptions&
-endfunc
-
-" Test for mksession with and without options restores shortmess
-func Test_mksession_shortmess()
- " Without options
- set sessionoptions-=options
- split
- mksession! Xtest_mks.out
- let found_save = 0
- let found_restore = 0
- let lines = readfile('Xtest_mks.out')
- for line in lines
- let line = trim(line)
-
- if line ==# 'let s:shortmess_save = &shortmess'
- let found_save += 1
- endif
-
- if found_save !=# 0 && line ==# 'let &shortmess = s:shortmess_save'
- let found_restore += 1
- endif
- endfor
- call assert_equal(1, found_save)
- call assert_equal(1, found_restore)
- call delete('Xtest_mks.out')
- close
- set sessionoptions&
-
- " With options
- set sessionoptions+=options
- split
- mksession! Xtest_mks.out
- let found_restore = 0
- let lines = readfile('Xtest_mks.out')
- for line in lines
- if line =~# 's:shortmess_save'
- let found_restore += 1
- endif
- endfor
- call assert_equal(0, found_restore)
- call delete('Xtest_mks.out')
- close
- set sessionoptions&
-endfunc
-
-" Test that when Vim loading session has 'A' in 'shortmess' it does not
-" complain about an existing swapfile.
-func Test_mksession_shortmess_with_A()
- edit Xtestfile
- write
- let fname = swapname('%')
- let cont = readblob(fname)
- set sessionoptions-=options
- mksession Xtestsession
- bwipe!
-
- " Recreate the swap file to pretend the file is being edited
- call writefile(cont, fname)
- set shortmess+=A
- source Xtestsession
-
- set shortmess&
- set sessionoptions&
- call delete('Xtestsession')
- call delete(fname)
-endfunc
-
-" Test for mksession with 'compatible' option
-func Test_mksession_compatible()
- throw 'skipped: Nvim does not support "compatible" option'
- mksession! Xtest_mks1.out
- set compatible
- mksession! Xtest_mks2.out
- set nocp
-
- let test_success = v:false
- let lines = readfile('Xtest_mks1.out')
- for line in lines
- if line =~ '^if &cp | set nocp | endif'
- let test_success = v:true
- break
- endif
- endfor
- call assert_true(test_success)
-
- let test_success = v:false
- let lines = readfile('Xtest_mks2.out')
- for line in lines
- if line =~ '^if !&cp | set cp | endif'
- let test_success = v:true
- break
- endif
- endfor
- call assert_true(test_success)
-
- call delete('Xtest_mks1.out')
- call delete('Xtest_mks2.out')
- set compatible&
- set sessionoptions&
-endfunc
-
-func s:ClearMappings()
- mapclear
- omapclear
- mapclear!
- lmapclear
- tmapclear
-endfunc
-
-func Test_mkvimrc()
- let entries = [
- \ ['', 'nothing', '<Nop>'],
- \ ['n', 'normal', 'NORMAL'],
- \ ['v', 'visual', 'VISUAL'],
- \ ['s', 'select', 'SELECT'],
- \ ['x', 'visualonly', 'VISUALONLY'],
- \ ['o', 'operator', 'OPERATOR'],
- \ ['i', 'insert', 'INSERT'],
- \ ['l', 'lang', 'LANG'],
- \ ['c', 'command', 'COMMAND'],
- \ ['t', 'terminal', 'TERMINAL'],
- \ ]
- for entry in entries
- exe entry[0] .. 'map ' .. entry[1] .. ' ' .. entry[2]
- endfor
-
- mkvimrc Xtestvimrc
-
- call s:ClearMappings()
- for entry in entries
- call assert_equal('', maparg(entry[1], entry[0]))
- endfor
-
- source Xtestvimrc
-
- for entry in entries
- call assert_equal(entry[2], maparg(entry[1], entry[0]))
- endfor
-
- call s:ClearMappings()
-
- " the 'pastetoggle', 'wildchar' and 'wildcharm' option values should be
- " stored as key names in the vimrc file
- set pastetoggle=<F5>
- set wildchar=<F6>
- set wildcharm=<F7>
- call assert_fails('mkvimrc Xtestvimrc')
- mkvimrc! Xtestvimrc
- call assert_notequal(-1, index(readfile('Xtestvimrc'), 'set pastetoggle=<F5>'))
- call assert_notequal(-1, index(readfile('Xtestvimrc'), 'set wildchar=<F6>'))
- call assert_notequal(-1, index(readfile('Xtestvimrc'), 'set wildcharm=<F7>'))
- set pastetoggle& wildchar& wildcharm&
-
- call delete('Xtestvimrc')
-endfunc
-
-func Test_scrolloff()
- set sessionoptions+=localoptions
- setlocal so=1 siso=1
- mksession! Xtest_mks.out
- setlocal so=-1 siso=-1
- source Xtest_mks.out
- call assert_equal(1, &l:so)
- call assert_equal(1, &l:siso)
- call delete('Xtest_mks.out')
- setlocal so& siso&
- set sessionoptions&
-endfunc
-
-func Test_altfile()
- edit Xone
- split Xtwo
- edit Xtwoalt
- edit #
- wincmd w
- edit Xonealt
- edit #
- mksession! Xtest_altfile
- only
- bwipe Xonealt
- bwipe Xtwoalt
- bwipe!
- source Xtest_altfile
- call assert_equal('Xone', bufname())
- call assert_equal('Xonealt', bufname('#'))
- wincmd w
- call assert_equal('Xtwo', bufname())
- call assert_equal('Xtwoalt', bufname('#'))
- only
- bwipe!
- call delete('Xtest_altfile')
-endfunc
-
-" Test for creating views with manual folds
-func Test_mkview_manual_fold()
- call writefile(range(1,10), 'Xfile')
- new Xfile
- " create recursive folds
- 5,6fold
- 4,7fold
- mkview Xview
- normal zE
- source Xview
- call assert_equal([-1, 4, 4, 4, 4, -1], [foldclosed(3), foldclosed(4),
- \ foldclosed(5), foldclosed(6), foldclosed(7), foldclosed(8)])
- " open one level of fold
- 4foldopen
- mkview! Xview
- normal zE
- source Xview
- call assert_equal([-1, -1, 5, 5, -1, -1], [foldclosed(3), foldclosed(4),
- \ foldclosed(5), foldclosed(6), foldclosed(7), foldclosed(8)])
- " open all the folds
- %foldopen!
- mkview! Xview
- normal zE
- source Xview
- call assert_equal([-1, -1, -1, -1, -1, -1], [foldclosed(3), foldclosed(4),
- \ foldclosed(5), foldclosed(6), foldclosed(7), foldclosed(8)])
- call delete('Xfile')
- call delete('Xview')
- bw!
-endfunc
-
-" vim: shiftwidth=2 sts=2 expandtab