vim-patch:8.2.0047: cannot skip tests for specific MS-Windows platform (#13461)

Problem:    Cannot skip tests for specific MS-Windows platform.
Solution:   Add windowsversion().
0c1e3744ff
This commit is contained in:
Jan Edmund Lazo 2020-12-11 19:45:22 -05:00 committed by GitHub
parent a82bcf9d9c
commit 062576f679
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 44 additions and 0 deletions

View File

@ -9331,6 +9331,13 @@ wincol() The result is a Number, which is the virtual column of the
cursor in the window. This is counting screen cells from the cursor in the window. This is counting screen cells from the
left side of the window. The leftmost column is one. left side of the window. The leftmost column is one.
*windowsversion()*
windowsversion()
The result is a String. For MS-Windows it indicates the OS
version. E.g, Windows 10 is "10.0", Windows 8 is "6.2",
Windows XP is "5.1". For non-MS-Windows systems the result is
an empty string.
winheight({nr}) *winheight()* winheight({nr}) *winheight()*
The result is a Number, which is the height of window {nr}. The result is a Number, which is the height of window {nr}.
{nr} can be the window number or the |window-ID|. {nr} can be the window number or the |window-ID|.

View File

@ -392,6 +392,7 @@ return {
win_screenpos={args=1}, win_screenpos={args=1},
winbufnr={args=1}, winbufnr={args=1},
wincol={}, wincol={},
windowsversion={},
winheight={args=1}, winheight={args=1},
winlayout={args={0, 1}}, winlayout={args={0, 1}},
winline={}, winline={},

View File

@ -11213,6 +11213,13 @@ static void f_winwidth(typval_T *argvars, typval_T *rettv, FunPtr fptr)
} }
} }
// "windowsversion()" function
static void f_windowsversion(typval_T *argvars, typval_T *rettv, FunPtr fptr)
{
rettv->v_type = VAR_STRING;
rettv->vval.v_string = (char_u *)xstrdup(windowsVersion);
}
/// "wordcount()" function /// "wordcount()" function
static void f_wordcount(typval_T *argvars, typval_T *rettv, FunPtr fptr) static void f_wordcount(typval_T *argvars, typval_T *rettv, FunPtr fptr)
{ {

View File

@ -1052,4 +1052,7 @@ typedef enum {
#define MIN_CD_SCOPE kCdScopeWindow #define MIN_CD_SCOPE kCdScopeWindow
#define MAX_CD_SCOPE kCdScopeGlobal #define MAX_CD_SCOPE kCdScopeGlobal
// Only filled for Win32.
EXTERN char windowsVersion[20] INIT(= { 0 });
#endif // NVIM_GLOBALS_H #endif // NVIM_GLOBALS_H

View File

@ -169,6 +169,14 @@ void early_init(mparm_T *paramp)
init_normal_cmds(); // Init the table of Normal mode commands. init_normal_cmds(); // Init the table of Normal mode commands.
highlight_init(); highlight_init();
#ifdef WIN32
OSVERSIONINFO ovi;
ovi.dwOSVersionInfoSize = sizeof(ovi);
GetVersionEx(&ovi);
snprintf(windowsVersion, sizeof(windowsVersion), "%d.%d",
(int)ovi.dwMajorVersion, (int)ovi.dwMinorVersion);
#endif
#if defined(HAVE_LOCALE_H) #if defined(HAVE_LOCALE_H)
// Setup to use the current locale (for ctype() and many other things). // Setup to use the current locale (for ctype() and many other things).
// NOTE: Translated messages with encodings other than latin1 will not // NOTE: Translated messages with encodings other than latin1 will not

View File

@ -348,6 +348,16 @@ func Test_set_values()
endif endif
endfunc endfunc
func Test_renderoptions()
throw 'skipped: Nvim does not support renderoptions'
" Only do this for Windows Vista and later, fails on Windows XP and earlier.
" Doesn't hurt to do this on a non-Windows system.
if windowsversion() !~ '^[345]\.'
set renderoptions=type:directx
set rop=type:directx
endif
endfunc
func ResetIndentexpr() func ResetIndentexpr()
set indentexpr= set indentexpr=
endfunc endfunc

View File

@ -2,7 +2,10 @@ local helpers = require('test.functional.helpers')(after_each)
local clear = helpers.clear local clear = helpers.clear
local eq = helpers.eq local eq = helpers.eq
local matches = helpers.matches
local exc_exec = helpers.exc_exec local exc_exec = helpers.exc_exec
local iswin = helpers.iswin
local eval = helpers.eval
describe('Up to MAX_FUNC_ARGS arguments are handled by', function() describe('Up to MAX_FUNC_ARGS arguments are handled by', function()
local max_func_args = 20 -- from eval.h local max_func_args = 20 -- from eval.h
@ -27,3 +30,8 @@ describe('Up to MAX_FUNC_ARGS arguments are handled by', function()
eq('Vim(call):E740: Too many arguments for function rpcnotify', ret) eq('Vim(call):E740: Too many arguments for function rpcnotify', ret)
end) end)
end) end)
it('windowsversion()', function()
clear()
matches(iswin() and '^%d+%.%d+$' or '^$', eval('windowsversion()'))
end)