Mercurial > vim
view src/testdir/test_diffmode.vim @ 11083:ae86651164d7 v8.0.0430
patch 8.0.0430: options test fails or hangs on MS-Windows
commit https://github.com/vim/vim/commit/bb962262eb6b18d93161d7506317d215ae80bfe5
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Mar 8 00:01:35 2017 +0100
patch 8.0.0430: options test fails or hangs on MS-Windows
Problem: Options test fails or hangs on MS-Windows.
Solution: Run it separately instead of part of test_alot. Use "-S" instead
of "-u" to run the script. Fix failures.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 08 Mar 2017 00:15:04 +0100 |
parents | f5bd684e47a1 |
children | ae45d497868f |
line wrap: on
line source
" Tests for diff mode func Test_diff_fold_sync() enew! let l = range(50) call setline(1, l) diffthis let winone = win_getid() new let l[25] = 'diff' call setline(1, l) diffthis let wintwo = win_getid() " line 15 is inside the closed fold call assert_equal(19, foldclosedend(10)) call win_gotoid(winone) call assert_equal(19, foldclosedend(10)) " open the fold normal zv call assert_equal(-1, foldclosedend(10)) " fold in other window must have opened too call win_gotoid(wintwo) call assert_equal(-1, foldclosedend(10)) " cursor position is in sync normal 23G call win_gotoid(winone) call assert_equal(23, getcurpos()[1]) windo diffoff close! set nomodified endfunc func Test_vert_split() " Disable the title to avoid xterm keeping the wrong one. set notitle noicon new let l = ['1 aa', '2 bb', '3 cc', '4 dd', '5 ee'] call setline(1, l) w! Xtest normal dd $ put normal kkrXoxxx w! Xtest2 file Nop normal ggoyyyjjjozzzz set foldmethod=marker foldcolumn=4 call assert_equal(0, &diff) call assert_equal('marker', &foldmethod) call assert_equal(4, &foldcolumn) call assert_equal(0, &scrollbind) call assert_equal(0, &cursorbind) call assert_equal(1, &wrap) vert diffsplit Xtest vert diffsplit Xtest2 call assert_equal(1, &diff) call assert_equal('diff', &foldmethod) call assert_equal(2, &foldcolumn) call assert_equal(1, &scrollbind) call assert_equal(1, &cursorbind) call assert_equal(0, &wrap) let diff_fdm = &fdm let diff_fdc = &fdc " repeat entering diff mode here to see if this saves the wrong settings diffthis " jump to second window for a moment to have filler line appear at start of " first window wincmd w normal gg wincmd p normal gg call assert_equal(2, winline()) normal j call assert_equal(4, winline()) normal j call assert_equal(5, winline()) normal j call assert_equal(6, winline()) normal j call assert_equal(8, winline()) normal j call assert_equal(9, winline()) wincmd w normal gg call assert_equal(1, winline()) normal j call assert_equal(2, winline()) normal j call assert_equal(4, winline()) normal j call assert_equal(5, winline()) normal j call assert_equal(8, winline()) wincmd w normal gg call assert_equal(2, winline()) normal j call assert_equal(3, winline()) normal j call assert_equal(4, winline()) normal j call assert_equal(5, winline()) normal j call assert_equal(6, winline()) normal j call assert_equal(7, winline()) normal j call assert_equal(8, winline()) " Test diffoff diffoff! 1wincmd 2 let &diff = 1 let &fdm = diff_fdm let &fdc = diff_fdc 4wincmd w diffoff! 1wincmd w call assert_equal(0, &diff) call assert_equal('marker', &foldmethod) call assert_equal(4, &foldcolumn) call assert_equal(0, &scrollbind) call assert_equal(0, &cursorbind) call assert_equal(1, &wrap) wincmd w call assert_equal(0, &diff) call assert_equal('marker', &foldmethod) call assert_equal(4, &foldcolumn) call assert_equal(0, &scrollbind) call assert_equal(0, &cursorbind) call assert_equal(1, &wrap) wincmd w call assert_equal(0, &diff) call assert_equal('marker', &foldmethod) call assert_equal(4, &foldcolumn) call assert_equal(0, &scrollbind) call assert_equal(0, &cursorbind) call assert_equal(1, &wrap) call delete('Xtest') call delete('Xtest2') windo bw! endfunc func Test_filler_lines() " Test that diffing shows correct filler lines enew! put =range(4,10) 1d _ vnew put =range(1,10) 1d _ windo diffthis wincmd h call assert_equal(1, line('w0')) unlet! diff_fdm diff_fdc windo diffoff bwipe! enew! endfunc func Test_diffget_diffput() enew! let l = range(50) call setline(1, l) call assert_fails('diffget', 'E99:') diffthis call assert_fails('diffget', 'E100:') new let l[10] = 'one' let l[20] = 'two' let l[30] = 'three' let l[40] = 'four' call setline(1, l) diffthis call assert_equal('one', getline(11)) 11diffget call assert_equal('10', getline(11)) 21diffput wincmd w call assert_equal('two', getline(21)) normal 31Gdo call assert_equal('three', getline(31)) call assert_equal('40', getline(41)) normal 41Gdp wincmd w call assert_equal('40', getline(41)) new diffthis call assert_fails('diffget', 'E101:') windo diffoff bwipe! bwipe! enew! endfunc func Test_diffoff() enew! call setline(1, ['Two', 'Three']) let normattr = screenattr(1, 1) diffthis botright vert new call setline(1, ['One', '', 'Two', 'Three']) diffthis redraw call assert_notequal(normattr, screenattr(1, 1)) diffoff! redraw call assert_equal(normattr, screenattr(1, 1)) bwipe! bwipe! endfunc func Test_diffoff_hidden() set diffopt=filler,foldcolumn:0 e! one call setline(1, ['Two', 'Three']) let normattr = screenattr(1, 1) diffthis botright vert new two call setline(1, ['One', 'Four']) diffthis redraw call assert_notequal(normattr, screenattr(1, 1)) set hidden close redraw " diffing with hidden buffer two call assert_notequal(normattr, screenattr(1, 1)) diffoff redraw call assert_equal(normattr, screenattr(1, 1)) diffthis redraw " still diffing with hidden buffer two call assert_notequal(normattr, screenattr(1, 1)) diffoff! redraw call assert_equal(normattr, screenattr(1, 1)) diffthis redraw " no longer diffing with hidden buffer two call assert_equal(normattr, screenattr(1, 1)) bwipe! bwipe! set hidden& diffopt& endfunc func Test_setting_cursor() new Xtest1 put =range(1,90) wq new Xtest2 put =range(1,100) wq tabe Xtest2 $ diffsp Xtest1 tabclose call delete('Xtest1') call delete('Xtest2') endfunc func Test_diff_move_to() new call setline(1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) diffthis vnew call setline(1, [1, '2x', 3, 4, 4, 5, '6x', 7, '8x', 9, '10x']) diffthis norm ]c call assert_equal(2, line('.')) norm 3]c call assert_equal(9, line('.')) norm 10]c call assert_equal(11, line('.')) norm [c call assert_equal(9, line('.')) norm 2[c call assert_equal(5, line('.')) norm 10[c call assert_equal(2, line('.')) %bwipe! endfunc func Test_diffpatch() " The patch program on MS-Windows may fail or hang. if !executable('patch') || !has('unix') return endif new insert *************** *** 1,3 **** 1 ! 2 3 --- 1,4 ---- 1 ! 2x 3 + 4 . saveas Xpatch bwipe! new call assert_fails('diffpatch Xpatch', 'E816:') call setline(1, ['1', '2', '3']) diffpatch Xpatch call assert_equal(['1', '2x', '3', '4'], getline(1, '$')) call delete('Xpatch') bwipe! endfunc func Test_diff_too_many_buffers() for i in range(1, 8) exe "new Xtest" . i diffthis endfor new Xtest9 call assert_fails('diffthis', 'E96:') %bwipe! endfunc func Test_diff_nomodifiable() new call setline(1, [1, 2, 3, 4]) setl nomodifiable diffthis vnew call setline(1, ['1x', 2, 3, 3, 4]) diffthis call assert_fails('norm dp', 'E793:') setl nomodifiable call assert_fails('norm do', 'E21:') %bwipe! endfunc func Test_diff_lastline() enew! only! call setline(1, ['This is a ', 'line with five ', 'rows']) diffthis botright vert new call setline(1, ['This is', 'a line with ', 'four rows']) diffthis 1 call feedkeys("Je a\<CR>", 'tx') call feedkeys("Je a\<CR>", 'tx') let w1lines = winline() wincmd w $ let w2lines = winline() call assert_equal(w2lines, w1lines) bwipe! bwipe! endfunc