forked from aniani/vim
patch 7.4.1588
Problem: Old style test for quickfix. Solution: Turn test 96 into a new style test.
This commit is contained in:
@@ -79,7 +79,6 @@ SCRIPTS_ALL = \
|
||||
test93.out \
|
||||
test94.out \
|
||||
test95.out \
|
||||
test96.out \
|
||||
test98.out \
|
||||
test99.out \
|
||||
test101.out \
|
||||
|
@@ -1,142 +0,0 @@
|
||||
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("<amatch>"))
|
||||
: 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 \<CR>"
|
||||
:wincmd p
|
||||
:3
|
||||
:exe "normal \<CR>"
|
||||
:wincmd p
|
||||
:4
|
||||
:exe "normal \<CR>"
|
||||
: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 \<CR>"
|
||||
:wincmd p
|
||||
:3
|
||||
:exe "normal \<CR>"
|
||||
:wincmd p
|
||||
:4
|
||||
:exe "normal \<CR>"
|
||||
: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
|
||||
|
@@ -1,9 +0,0 @@
|
||||
|
||||
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
|
@@ -366,3 +366,115 @@ function Test_efm()
|
||||
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("<amatch>"))
|
||||
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 \<CR>"
|
||||
wincmd p
|
||||
3
|
||||
exe "normal \<CR>"
|
||||
wincmd p
|
||||
4
|
||||
exe "normal \<CR>"
|
||||
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 \<CR>"
|
||||
wincmd p
|
||||
3
|
||||
exe "normal \<CR>"
|
||||
wincmd p
|
||||
4
|
||||
exe "normal \<CR>"
|
||||
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
|
||||
|
@@ -748,6 +748,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1588,
|
||||
/**/
|
||||
1587,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user