Merge pull request #10290 from janlazo/vim-8.1.0086

vim-patch:8.1.{86,347}
This commit is contained in:
Justin M. Keyes
2019-06-25 01:56:10 +02:00
committed by GitHub
3 changed files with 50 additions and 1 deletions

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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