mirror of
https://github.com/neovim/neovim.git
synced 2025-10-08 19:06:31 +00:00
Merge pull request #10290 from janlazo/vim-8.1.0086
vim-patch:8.1.{86,347}
This commit is contained in:
@@ -54,6 +54,7 @@ bool os_libcall(const char *libname,
|
||||
// open the dynamic loadable library
|
||||
if (uv_dlopen(libname, &lib)) {
|
||||
EMSG2(_("dlerror = \"%s\""), uv_dlerror(&lib));
|
||||
uv_dlclose(&lib);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@@ -1,4 +1,5 @@
|
||||
" Tests for various functions.
|
||||
source shared.vim
|
||||
|
||||
" Must be done first, since the alternate buffer must be unset.
|
||||
func Test_00_bufexists()
|
||||
@@ -1140,3 +1141,50 @@ func Test_reg_executing_and_recording()
|
||||
delfunc s:save_reg_stat
|
||||
unlet s:reg_stat
|
||||
endfunc
|
||||
|
||||
func Test_libcall_libcallnr()
|
||||
if !has('libcall')
|
||||
return
|
||||
endif
|
||||
|
||||
if has('win32')
|
||||
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
|
||||
else
|
||||
" 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 = ''
|
||||
endif
|
||||
|
||||
if has('win32')
|
||||
call assert_equal($USERPROFILE, libcall(libc, 'getenv', 'USERPROFILE'))
|
||||
else
|
||||
call assert_equal($HOME, libcall(libc, 'getenv', 'HOME'))
|
||||
endif
|
||||
|
||||
" If function returns NULL, libcall() should return an empty string.
|
||||
call assert_equal('', libcall(libc, 'getenv', 'X_ENV_DOES_NOT_EXIT'))
|
||||
|
||||
" Test libcallnr() with string and integer argument.
|
||||
call assert_equal(4, libcallnr(libc, 'strlen', 'abcd'))
|
||||
call assert_equal(char2nr('A'), libcallnr(libc, 'toupper', char2nr('a')))
|
||||
|
||||
call assert_fails("call libcall(libc, 'Xdoesnotexist_', '')", 'E364:')
|
||||
call assert_fails("call libcallnr(libc, 'Xdoesnotexist_', '')", 'E364:')
|
||||
|
||||
call assert_fails("call libcall('Xdoesnotexist_', 'getenv', 'HOME')", 'E364:')
|
||||
call assert_fails("call libcallnr('Xdoesnotexist_', 'strlen', 'abcd')", 'E364:')
|
||||
endfunc
|
||||
|
@@ -33,7 +33,7 @@ func Test_writefile_fails_gently()
|
||||
endfunc
|
||||
|
||||
func Test_writefile_fails_conversion()
|
||||
if !has('multi_byte') || !has('iconv')
|
||||
if !has('multi_byte') || !has('iconv') || system('uname -s') =~ 'SunOS'
|
||||
return
|
||||
endif
|
||||
" Without a backup file the write won't happen if there is a conversion
|
||||
|
Reference in New Issue
Block a user