forked from aniani/vim
Problem: Some tests fail on MS-Windows.
Solution: Fix path separators in test 89 and 96. Omit test 97, escaping
works differently. Make findfile() work on MS-Windows.
143 lines
3.3 KiB
Plaintext
143 lines
3.3 KiB
Plaintext
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
|
|
|