view src/testdir/test96.in @ 7736:f2ddad8cbce7 v7.4.1166

commit https://github.com/vim/vim/commit/fcaaae6b3fdbf3421a1ff95a25ae16d82381c39a Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jan 24 16:49:11 2016 +0100 patch 7.4.1166 Problem: Can't encode a Funcref into JSON. jsonencode() doesn't handle the same list or dict twice properly. (Nikolay Pavlov) Solution: Give an error. Reset copyID when the list or dict is finished.
author Christian Brabandt <cb@256bit.org>
date Sun, 24 Jan 2016 17:00:04 +0100
parents 6cabac58f26f
children
line wrap: on
line source

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