Merge pull request #17272 from zeertzjq/vim-8.1.0846

vim-patch:8.1.{0846,0878,0884,2358},8.2.{0305,0352,0687,3797}
This commit is contained in:
zeertzjq
2022-02-04 09:48:48 +08:00
committed by GitHub
12 changed files with 109 additions and 47 deletions

View File

@@ -63,6 +63,15 @@ func CheckUnix()
endif
endfunc
" Command to check for not running on a BSD system.
" TODO: using this checks should not be needed
command CheckNotBSD call CheckNotBSD()
func CheckNotBSD()
if has('bsd')
throw 'Skipped: does not work on BSD'
endif
endfunc
" Command to check that making screendumps is supported.
" Caller must source screendump.vim
command CheckScreendump call CheckScreendump()

View File

@@ -6,7 +6,6 @@
source test_charsearch_utf8.vim
source test_expr_utf8.vim
source test_matchadd_conceal_utf8.vim
source test_mksession_utf8.vim
source test_regexp_utf8.vim
source test_source_utf8.vim

View File

@@ -1377,6 +1377,36 @@ func Test_func_exists_on_reload()
delfunc ExistingFunction
endfunc
func Test_platform_name()
" The system matches at most only one name.
let names = ['amiga', 'beos', 'bsd', 'hpux', 'linux', 'mac', 'qnx', 'sun', 'vms', 'win32', 'win32unix']
call assert_inrange(0, 1, len(filter(copy(names), 'has(v:val)')))
" Is Unix?
call assert_equal(has('beos'), has('beos') && has('unix'))
call assert_equal(has('bsd'), has('bsd') && has('unix'))
call assert_equal(has('hpux'), has('hpux') && has('unix'))
call assert_equal(has('linux'), has('linux') && has('unix'))
call assert_equal(has('mac'), has('mac') && has('unix'))
call assert_equal(has('qnx'), has('qnx') && has('unix'))
call assert_equal(has('sun'), has('sun') && has('unix'))
call assert_equal(has('win32'), has('win32') && !has('unix'))
call assert_equal(has('win32unix'), has('win32unix') && has('unix'))
if has('unix') && executable('uname')
let uname = system('uname')
call assert_equal(uname =~? 'BeOS', has('beos'))
" GNU userland on BSD kernels (e.g., GNU/kFreeBSD) don't have BSD defined
call assert_equal(uname =~? '\%(GNU/k\w\+\)\@<!BSD\|DragonFly', has('bsd'))
call assert_equal(uname =~? 'HP-UX', has('hpux'))
call assert_equal(uname =~? 'Linux', has('linux'))
call assert_equal(uname =~? 'Darwin', has('mac'))
call assert_equal(uname =~? 'QNX', has('qnx'))
call assert_equal(uname =~? 'SunOS', has('sun'))
call assert_equal(uname =~? 'CYGWIN\|MSYS', has('win32unix'))
endif
endfunc
sandbox function Fsandbox()
normal ix
endfunc
@@ -1519,24 +1549,31 @@ func Test_libcall_libcallnr()
let libc = 'msvcrt.dll'
elseif has('mac')
let libc = 'libSystem.B.dylib'
elseif system('uname -s') =~ 'SunOS'
" Set the path to libc.so according to the architecture.
let test_bits = system('file ' . GetVimProg())
let test_arch = system('uname -p')
if test_bits =~ '64-bit' && test_arch =~ 'sparc'
let libc = '/usr/lib/sparcv9/libc.so'
elseif test_bits =~ '64-bit' && test_arch =~ 'i386'
let libc = '/usr/lib/amd64/libc.so'
else
let libc = '/usr/lib/libc.so'
endif
elseif system('uname -s') =~ 'OpenBSD'
let libc = 'libc.so'
else
elseif executable('ldd')
let libc = matchstr(split(system('ldd ' . GetVimProg())), '/libc\.so\>')
endif
if get(l:, 'libc', '') ==# ''
" On Unix, libc.so can be in various places.
" Interestingly, using an empty string for the 1st argument of libcall
" allows to call functions from libc which is not documented.
let libc = ''
if has('linux')
" There is not documented but regarding the 1st argument of glibc's
" dlopen an empty string and nullptr are equivalent, so using an empty
" string for the 1st argument of libcall allows to call functions.
let libc = ''
elseif has('sun')
" Set the path to libc.so according to the architecture.
let test_bits = system('file ' . GetVimProg())
let test_arch = system('uname -p')
if test_bits =~ '64-bit' && test_arch =~ 'sparc'
let libc = '/usr/lib/sparcv9/libc.so'
elseif test_bits =~ '64-bit' && test_arch =~ 'i386'
let libc = '/usr/lib/amd64/libc.so'
else
let libc = '/usr/lib/libc.so'
endif
else
" Unfortunately skip this test until a good way is found.
return
endif
endif
if has('win32')

View File

@@ -284,10 +284,10 @@ func Test_relativenumber_colors()
" Default colors
call VerifyScreenDump(buf, 'Test_relnr_colors_1', {})
call term_sendkeys(buf, ":hi LineNrAbove ctermfg=blue\<CR>")
call term_sendkeys(buf, ":hi LineNrAbove ctermfg=blue\<CR>:\<CR>")
call VerifyScreenDump(buf, 'Test_relnr_colors_2', {})
call term_sendkeys(buf, ":hi LineNrBelow ctermfg=green\<CR>")
call term_sendkeys(buf, ":hi LineNrBelow ctermfg=green\<CR>:\<CR>")
call VerifyScreenDump(buf, 'Test_relnr_colors_3', {})
call term_sendkeys(buf, ":hi clear LineNrAbove\<CR>")

View File

@@ -1914,6 +1914,7 @@ func Test_switchbuf()
" If opening a file changes 'switchbuf', then the new value should be
" retained.
set modeline&vim
call writefile(["vim: switchbuf=split"], 'Xqftestfile1')
enew | only
set switchbuf&vim

View File

@@ -1,4 +1,5 @@
" Test the :source! command
source check.vim
func Test_source_utf8()
" check that sourcing a script with 0x80 as second byte works
@@ -31,24 +32,24 @@ endfunc
" Test for sourcing a file with CTRL-V's at the end of the line
func Test_source_ctrl_v()
call writefile(['map __1 afirst',
\ 'map __2 asecond',
\ 'map __3 athird',
\ 'map __4 afourth',
\ 'map __5 afifth',
\ "map __1 asd\<C-V>",
\ "map __2 asd\<C-V>\<C-V>",
\ "map __3 asd\<C-V>\<C-V>",
\ "map __4 asd\<C-V>\<C-V>\<C-V>",
\ "map __5 asd\<C-V>\<C-V>\<C-V>",
\ ], 'Xtestfile')
call writefile(['map __1 afirst',
\ 'map __2 asecond',
\ 'map __3 athird',
\ 'map __4 afourth',
\ 'map __5 afifth',
\ "map __1 asd\<C-V>",
\ "map __2 asd\<C-V>\<C-V>",
\ "map __3 asd\<C-V>\<C-V>",
\ "map __4 asd\<C-V>\<C-V>\<C-V>",
\ "map __5 asd\<C-V>\<C-V>\<C-V>",
\ ], 'Xtestfile')
source Xtestfile
enew!
exe "normal __1\<Esc>\<Esc>__2\<Esc>__3\<Esc>\<Esc>__4\<Esc>__5\<Esc>"
exe "%s/\<C-J>/0/g"
call assert_equal(['sd',
\ "map __2 asd\<Esc>secondsd\<Esc>sd0map __5 asd0fifth"],
\ getline(1, 2))
\ "map __2 asd\<Esc>secondsd\<Esc>sd0map __5 asd0fifth"],
\ getline(1, 2))
enew!
call delete('Xtestfile')

View File

@@ -86,6 +86,9 @@ endfunc
" test that g~ap changes one paragraph only.
func Test_gap()
new
call feedkeys("iabcd\n\ndefggg0g~ap", "tx")
" setup text
call feedkeys("iabcd\<cr>\<cr>defg", "tx")
" modify only first line
call feedkeys("gg0g~ap", "tx")
call assert_equal(["ABCD", "", "defg"], getline(1,3))
endfunc

View File

@@ -43,7 +43,7 @@ func Test_writefile_fails_gently()
endfunc
func Test_writefile_fails_conversion()
if !has('iconv') || system('uname -s') =~ 'SunOS'
if !has('iconv') || has('sun')
return
endif
" Without a backup file the write won't happen if there is a conversion