To: vim_dev@googlegroups.com Subject: Patch 7.4.1588 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.4.1588 Problem: Old style test for quickfix. Solution: Turn test 96 into a new style test. Files: src/testdir/Make_all.mak, src/testdir/test96.in, src/testdir/test96.ok, src/testdir/test_quickfix.vim *** ../vim-7.4.1587/src/testdir/Make_all.mak 2016-03-15 17:10:12.302713149 +0100 --- src/testdir/Make_all.mak 2016-03-17 22:02:27.196266161 +0100 *************** *** 79,85 **** test93.out \ test94.out \ test95.out \ - test96.out \ test98.out \ test99.out \ test101.out \ --- 79,84 ---- *** ../vim-7.4.1587/src/testdir/test96.in 2013-07-03 21:16:20.000000000 +0200 --- src/testdir/test96.in 1970-01-01 01:00:00.000000000 +0100 *************** *** 1,142 **** - This will test for problems in quickfix: - A. incorrectly copying location lists which caused the location list to show a - different name than the file that was actually being displayed. - B. not reusing the window for which the location list window is opened but - instead creating new windows. - C. make sure that the location list window is not reused instead of the window - it belongs to. - - Note: to debug a problem comment out the last ":b 1" in a test and testing will - stop at this point. - - STARTTEST - :so small.vim - : enew - : w! test.out - : b 1 - : " Set up the test environment: - : function! ReadTestProtocol(name) - : let base = substitute(a:name, '\v^test://(.*)%(\.[^.]+)?', '\1', '') - : let word = substitute(base, '\v(.*)\..*', '\1', '') - : - : setl modifiable - : setl noreadonly - : setl noswapfile - : setl bufhidden=delete - : %del _ - : " For problem 2: - : " 'buftype' has to be set to reproduce the constant opening of new windows - : setl buftype=nofile - : - : call setline(1, word) - : - : setl nomodified - : setl nomodifiable - : setl readonly - : exe 'doautocmd BufRead ' . substitute(a:name, '\v^test://(.*)', '\1', '') - : endfunction - : augroup testgroup - : au! - : autocmd BufReadCmd test://* call ReadTestProtocol(expand("")) - : augroup END - : let words = [ "foo", "bar", "baz", "quux", "shmoo", "spam", "eggs" ] - : - : let qflist = [] - : for word in words - : call add(qflist, {'filename': 'test://' . word . '.txt', 'text': 'file ' . word . '.txt', }) - : " NOTE: problem 1: - : " intentionally not setting 'lnum' so that the quickfix entries are not - : " valid - : call setloclist(0, qflist, ' ') - : endfor - ENDTEST - - Test A: - STARTTEST - :lrewind - :enew - :lopen - :lnext - :lnext - :lnext - :lnext - :vert split - :wincmd L - :lopen - :wincmd p - :lnext - :"b 1 - :let fileName = expand("%") - :wincmd p - :let locationListFileName = substitute(getline(line('.')), '\([^|]*\)|.*', '\1', '') - :wincmd n - :wincmd K - :b test.out - :let fileName = substitute(fileName, '\\', '/', 'g') - :let locationListFileName = substitute(locationListFileName, '\\', '/', 'g') - :call append(line('$'), "Test A:") - :call append(line('$'), " - file name displayed: " . fileName) - :call append(line('$'), " - quickfix claims that the file name displayed is: " . locationListFileName) - :w - :wincmd o - :b 1 - ENDTEST - - Test B: - STARTTEST - :lrewind - :lopen - :2 - :exe "normal \" - :wincmd p - :3 - :exe "normal \" - :wincmd p - :4 - :exe "normal \" - :let numberOfWindowsOpen = winnr('$') - :wincmd n - :wincmd K - :b test.out - :call append(line('$'), "Test B:") - :call append(line('$'), " - number of window open: " . numberOfWindowsOpen) - :w - :wincmd o - :b 1 - ENDTEST - - Test C: - STARTTEST - :lrewind - :lopen - :" Let's move the location list window to the top to check whether it (the first - :" window found) will be reused when we try to open new windows: - :wincmd K - :2 - :exe "normal \" - :wincmd p - :3 - :exe "normal \" - :wincmd p - :4 - :exe "normal \" - :1wincmd w - :let locationListWindowBufType = &buftype - :2wincmd w - :let bufferName = expand("%") - :wincmd n - :wincmd K - :b test.out - :let bufferName = substitute(bufferName, '\\', '/', 'g') - :call append(line('$'), "Test C:") - :call append(line('$'), " - 'buftype' of the location list window: " . locationListWindowBufType) - :call append(line('$'), " - buffer displayed in the 2nd window: " . bufferName) - :w - :wincmd o - :b 1 - ENDTEST - - STARTTEST - :qa - ENDTEST - --- 0 ---- *** ../vim-7.4.1587/src/testdir/test96.ok 2013-07-01 21:16:44.000000000 +0200 --- src/testdir/test96.ok 1970-01-01 01:00:00.000000000 +0100 *************** *** 1,9 **** - - Test A: - - file name displayed: test://bar.txt - - quickfix claims that the file name displayed is: test://bar.txt - Test B: - - number of window open: 2 - Test C: - - 'buftype' of the location list window: quickfix - - buffer displayed in the 2nd window: test://quux.txt --- 0 ---- *** ../vim-7.4.1587/src/testdir/test_quickfix.vim 2016-03-15 14:10:54.478025751 +0100 --- src/testdir/test_quickfix.vim 2016-03-17 22:02:27.196266161 +0100 *************** *** 366,368 **** --- 366,480 ---- call assert_equal("[['W', 1], ['ZZZZ', 0], ['E^@CCCC', 1], ['YYYY', 0]]", l) let &efm = save_efm endfunction + + " This will test for problems in quickfix: + " A. incorrectly copying location lists which caused the location list to show + " a different name than the file that was actually being displayed. + " B. not reusing the window for which the location list window is opened but + " instead creating new windows. + " C. make sure that the location list window is not reused instead of the + " window it belongs to. + " + " Set up the test environment: + function! ReadTestProtocol(name) + let base = substitute(a:name, '\v^test://(.*)%(\.[^.]+)?', '\1', '') + let word = substitute(base, '\v(.*)\..*', '\1', '') + + setl modifiable + setl noreadonly + setl noswapfile + setl bufhidden=delete + %del _ + " For problem 2: + " 'buftype' has to be set to reproduce the constant opening of new windows + setl buftype=nofile + + call setline(1, word) + + setl nomodified + setl nomodifiable + setl readonly + exe 'doautocmd BufRead ' . substitute(a:name, '\v^test://(.*)', '\1', '') + endfunction + + function Test_locationlist() + enew + + augroup testgroup + au! + autocmd BufReadCmd test://* call ReadTestProtocol(expand("")) + augroup END + + let words = [ "foo", "bar", "baz", "quux", "shmoo", "spam", "eggs" ] + + let qflist = [] + for word in words + call add(qflist, {'filename': 'test://' . word . '.txt', 'text': 'file ' . word . '.txt', }) + " NOTE: problem 1: + " intentionally not setting 'lnum' so that the quickfix entries are not + " valid + call setloclist(0, qflist, ' ') + endfor + + " Test A + lrewind + enew + lopen + lnext + lnext + lnext + lnext + vert split + wincmd L + lopen + wincmd p + lnext + let fileName = expand("%") + wincmd p + let locationListFileName = substitute(getline(line('.')), '\([^|]*\)|.*', '\1', '') + let fileName = substitute(fileName, '\\', '/', 'g') + let locationListFileName = substitute(locationListFileName, '\\', '/', 'g') + call assert_equal("test://bar.txt", fileName) + call assert_equal("test://bar.txt", locationListFileName) + + wincmd n | only + + " Test B: + lrewind + lopen + 2 + exe "normal \" + wincmd p + 3 + exe "normal \" + wincmd p + 4 + exe "normal \" + call assert_equal(2, winnr('$')) + wincmd n | only + + " Test C: + lrewind + lopen + " Let's move the location list window to the top to check whether it (the + " first window found) will be reused when we try to open new windows: + wincmd K + 2 + exe "normal \" + wincmd p + 3 + exe "normal \" + wincmd p + 4 + exe "normal \" + 1wincmd w + call assert_equal('quickfix', &buftype) + 2wincmd w + let bufferName = expand("%") + let bufferName = substitute(bufferName, '\\', '/', 'g') + call assert_equal('test://quux.txt', bufferName) + + wincmd n | only + + augroup! testgroup + endfunction *** ../vim-7.4.1587/src/version.c 2016-03-17 21:50:57.263635136 +0100 --- src/version.c 2016-03-17 22:03:22.323677501 +0100 *************** *** 750,751 **** --- 750,753 ---- { /* Add new patch number below this line */ + /**/ + 1588, /**/ -- hundred-and-one symptoms of being an internet addict: 70. ISDN lines are added to your house on a hourly basis /// 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 ///