mirror of
https://github.com/vim/vim.git
synced 2025-10-03 05:14:07 -04:00
patch 8.0.0392: GUI test fails with Athena and Motif
Problem: GUI test fails with Athena and Motif. Solution: Add test_ignore_error(). Use it to ignore the "failed to create input context" error.
This commit is contained in:
@@ -2358,6 +2358,7 @@ test_alloc_fail({id}, {countdown}, {repeat})
|
|||||||
test_autochdir() none enable 'autochdir' during startup
|
test_autochdir() none enable 'autochdir' during startup
|
||||||
test_disable_char_avail({expr}) none test without typeahead
|
test_disable_char_avail({expr}) none test without typeahead
|
||||||
test_garbagecollect_now() none free memory right now for testing
|
test_garbagecollect_now() none free memory right now for testing
|
||||||
|
test_ignore_error({expr}) none ignore a specific error
|
||||||
test_null_channel() Channel null value for testing
|
test_null_channel() Channel null value for testing
|
||||||
test_null_dict() Dict null value for testing
|
test_null_dict() Dict null value for testing
|
||||||
test_null_job() Job null value for testing
|
test_null_job() Job null value for testing
|
||||||
@@ -7784,6 +7785,15 @@ test_garbagecollect_now() *test_garbagecollect_now()*
|
|||||||
internally, and |v:testing| must have been set before calling
|
internally, and |v:testing| must have been set before calling
|
||||||
any function.
|
any function.
|
||||||
|
|
||||||
|
test_ignore_error({expr}) *test_ignore_error()*
|
||||||
|
Ignore any error containing {expr}. A normal message is given
|
||||||
|
instead.
|
||||||
|
This is only meant to be used in tests, where catching the
|
||||||
|
error with try/catch cannot be used (because it skips over
|
||||||
|
following code).
|
||||||
|
{expr} is used literally, not as a pattern.
|
||||||
|
There is currently no way to revert this.
|
||||||
|
|
||||||
test_null_channel() *test_null_channel()*
|
test_null_channel() *test_null_channel()*
|
||||||
Return a Channel that is null. Only useful for testing.
|
Return a Channel that is null. Only useful for testing.
|
||||||
{only available when compiled with the +channel feature}
|
{only available when compiled with the +channel feature}
|
||||||
|
@@ -389,6 +389,7 @@ static void f_test_alloc_fail(typval_T *argvars, typval_T *rettv);
|
|||||||
static void f_test_autochdir(typval_T *argvars, typval_T *rettv);
|
static void f_test_autochdir(typval_T *argvars, typval_T *rettv);
|
||||||
static void f_test_disable_char_avail(typval_T *argvars, typval_T *rettv);
|
static void f_test_disable_char_avail(typval_T *argvars, typval_T *rettv);
|
||||||
static void f_test_garbagecollect_now(typval_T *argvars, typval_T *rettv);
|
static void f_test_garbagecollect_now(typval_T *argvars, typval_T *rettv);
|
||||||
|
static void f_test_ignore_error(typval_T *argvars, typval_T *rettv);
|
||||||
#ifdef FEAT_JOB_CHANNEL
|
#ifdef FEAT_JOB_CHANNEL
|
||||||
static void f_test_null_channel(typval_T *argvars, typval_T *rettv);
|
static void f_test_null_channel(typval_T *argvars, typval_T *rettv);
|
||||||
#endif
|
#endif
|
||||||
@@ -823,6 +824,7 @@ static struct fst
|
|||||||
{"test_autochdir", 0, 0, f_test_autochdir},
|
{"test_autochdir", 0, 0, f_test_autochdir},
|
||||||
{"test_disable_char_avail", 1, 1, f_test_disable_char_avail},
|
{"test_disable_char_avail", 1, 1, f_test_disable_char_avail},
|
||||||
{"test_garbagecollect_now", 0, 0, f_test_garbagecollect_now},
|
{"test_garbagecollect_now", 0, 0, f_test_garbagecollect_now},
|
||||||
|
{"test_ignore_error", 1, 1, f_test_ignore_error},
|
||||||
#ifdef FEAT_JOB_CHANNEL
|
#ifdef FEAT_JOB_CHANNEL
|
||||||
{"test_null_channel", 0, 0, f_test_null_channel},
|
{"test_null_channel", 0, 0, f_test_null_channel},
|
||||||
#endif
|
#endif
|
||||||
@@ -12325,6 +12327,15 @@ f_test_garbagecollect_now(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
|
|||||||
garbage_collect(TRUE);
|
garbage_collect(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* "test_ignore_error()" function
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
f_test_ignore_error(typval_T *argvars, typval_T *rettv UNUSED)
|
||||||
|
{
|
||||||
|
ignore_error_for_testing(get_tv_string(&argvars[0]));
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef FEAT_JOB_CHANNEL
|
#ifdef FEAT_JOB_CHANNEL
|
||||||
static void
|
static void
|
||||||
f_test_null_channel(typval_T *argvars UNUSED, typval_T *rettv)
|
f_test_null_channel(typval_T *argvars UNUSED, typval_T *rettv)
|
||||||
|
@@ -539,6 +539,31 @@ emsg_not_now(void)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FEAT_EVAL
|
||||||
|
static garray_T ignore_error_list = GA_EMPTY;
|
||||||
|
|
||||||
|
void
|
||||||
|
ignore_error_for_testing(char_u *error)
|
||||||
|
{
|
||||||
|
if (ignore_error_list.ga_itemsize == 0)
|
||||||
|
ga_init2(&ignore_error_list, sizeof(char_u *), 1);
|
||||||
|
|
||||||
|
ga_add_string(&ignore_error_list, error);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
ignore_error(char_u *msg)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < ignore_error_list.ga_len; ++i)
|
||||||
|
if (strstr((char *)msg,
|
||||||
|
(char *)((char_u **)(ignore_error_list.ga_data))[i]) != NULL)
|
||||||
|
return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !defined(HAVE_STRERROR) || defined(PROTO)
|
#if !defined(HAVE_STRERROR) || defined(PROTO)
|
||||||
/*
|
/*
|
||||||
* Replacement for perror() that behaves more or less like emsg() was called.
|
* Replacement for perror() that behaves more or less like emsg() was called.
|
||||||
@@ -577,6 +602,12 @@ emsg(char_u *s)
|
|||||||
if (emsg_not_now())
|
if (emsg_not_now())
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
#ifdef FEAT_EVAL
|
||||||
|
/* When testing some errors are turned into a normal message. */
|
||||||
|
if (ignore_error(s))
|
||||||
|
return msg(s);
|
||||||
|
#endif
|
||||||
|
|
||||||
called_emsg = TRUE;
|
called_emsg = TRUE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -8,6 +8,7 @@ void trunc_string(char_u *s, char_u *buf, int room_in, int buflen);
|
|||||||
void reset_last_sourcing(void);
|
void reset_last_sourcing(void);
|
||||||
void msg_source(int attr);
|
void msg_source(int attr);
|
||||||
int emsg_not_now(void);
|
int emsg_not_now(void);
|
||||||
|
void ignore_error_for_testing(char_u *error);
|
||||||
void do_perror(char *msg);
|
void do_perror(char *msg);
|
||||||
int emsg(char_u *s);
|
int emsg(char_u *s);
|
||||||
int emsg2(char_u *s, char_u *a1);
|
int emsg2(char_u *s, char_u *a1);
|
||||||
|
@@ -17,6 +17,9 @@ endfunc
|
|||||||
" Test for resetting "secure" flag after GUI has started.
|
" Test for resetting "secure" flag after GUI has started.
|
||||||
" Must be run first.
|
" Must be run first.
|
||||||
func Test_1_set_secure()
|
func Test_1_set_secure()
|
||||||
|
" Ignore the "failed to create input context" error.
|
||||||
|
call test_ignore_error('E285')
|
||||||
|
|
||||||
set exrc secure
|
set exrc secure
|
||||||
gui -f
|
gui -f
|
||||||
call assert_equal(1, has('gui_running'))
|
call assert_equal(1, has('gui_running'))
|
||||||
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
392,
|
||||||
/**/
|
/**/
|
||||||
391,
|
391,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user