To: vim_dev@googlegroups.com Subject: Patch 8.1.2100 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.1.2100 Problem: :mksession is not sufficiently tested. Solution: Add more test cases. (Yegappan Lakshmanan, closes #4993) Files: src/testdir/test_mksession.vim *** ../vim-8.1.2099/src/testdir/test_mksession.vim 2019-09-28 19:29:00.257366209 +0200 --- src/testdir/test_mksession.vim 2019-09-29 14:21:35.337483888 +0200 *************** *** 156,166 **** --- 156,172 ---- 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 *************** *** 541,564 **** set sessionoptions+=globals " create different global variables ! let g:Global_string = "Sun is shining" let g:Global_count = 100 let g:Global_pi = 3.14 mksession! Xtest_mks.out unlet g:Global_string unlet g:Global_count unlet g:Global_pi source Xtest_mks.out ! call assert_equal("Sun is shining", g:Global_string) call assert_equal(100, g:Global_count) call assert_equal(3.14, g:Global_pi) unlet g:Global_string unlet g:Global_count unlet g:Global_pi call delete('Xtest_mks.out') set sessionoptions& endfunc --- 547,574 ---- 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 *************** *** 639,658 **** for line in lines if line =~ '^set lines=' let found_resize = v:true endif endfor ! call assert_equal(v: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 endif endfor ! call assert_equal(v:true, found_resize) call delete('Xtest_mks1.out') call delete('Xtest_mks2.out') set sessionoptions& endfunc --- 649,768 ---- 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() + 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') + 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 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 with 'compatible' option + func Test_mksession_compatible() + 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 *************** *** 698,702 **** call delete('Xtestvimrc') endfunc - " vim: shiftwidth=2 sts=2 expandtab --- 808,811 ---- *** ../vim-8.1.2099/src/version.c 2019-09-28 22:11:49.654184756 +0200 --- src/version.c 2019-09-29 14:23:29.212611814 +0200 *************** *** 755,756 **** --- 755,758 ---- { /* Add new patch number below this line */ + /**/ + 2100, /**/ -- WOMAN: Well, 'ow did you become king then? ARTHUR: The Lady of the Lake, [angels sing] her arm clad in the purest shimmering samite, held aloft Excalibur from the bosom of the water signifying by Divine Providence that I, Arthur, was to carry Excalibur. [singing stops] That is why I am your king! The Quest for the Holy Grail (Monty Python) /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///