forked from aniani/vim
patch 8.0.1087: Test_terminal_cwd is flaky
Problem: Test_terminal_cwd is flaky. MS-Windows: term_start() "cwd" argument does not work. Solution: Wait for the condition to be true instead of using a sleep. Pass the directory to winpty.
This commit is contained in:
@@ -38,8 +38,11 @@
|
|||||||
* in tl_scrollback are no longer used.
|
* in tl_scrollback are no longer used.
|
||||||
*
|
*
|
||||||
* TODO:
|
* TODO:
|
||||||
* - check for memory leaks
|
|
||||||
* - patch to use GUI or cterm colors for vterm. Yasuhiro, #2067
|
* - patch to use GUI or cterm colors for vterm. Yasuhiro, #2067
|
||||||
|
* - when Normal background is not white or black, going to Terminal-Normal
|
||||||
|
* mode does not clear correctly. Use the terminal background color to erase
|
||||||
|
* the background.
|
||||||
|
* - patch to add tmap, jakalope (Jacob Askeland) #2073
|
||||||
* - Redirecting output does not work on MS-Windows.
|
* - Redirecting output does not work on MS-Windows.
|
||||||
* - implement term_setsize()
|
* - implement term_setsize()
|
||||||
* - add test for giving error for invalid 'termsize' value.
|
* - add test for giving error for invalid 'termsize' value.
|
||||||
@@ -3099,6 +3102,7 @@ term_and_job_init(
|
|||||||
jobopt_T *opt)
|
jobopt_T *opt)
|
||||||
{
|
{
|
||||||
WCHAR *cmd_wchar = NULL;
|
WCHAR *cmd_wchar = NULL;
|
||||||
|
WCHAR *cwd_wchar = NULL;
|
||||||
channel_T *channel = NULL;
|
channel_T *channel = NULL;
|
||||||
job_T *job = NULL;
|
job_T *job = NULL;
|
||||||
DWORD error;
|
DWORD error;
|
||||||
@@ -3126,6 +3130,8 @@ term_and_job_init(
|
|||||||
cmd_wchar = enc_to_utf16(cmd, NULL);
|
cmd_wchar = enc_to_utf16(cmd, NULL);
|
||||||
if (cmd_wchar == NULL)
|
if (cmd_wchar == NULL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
if (opt->jo_cwd != NULL)
|
||||||
|
cwd_wchar = enc_to_utf16(opt->jo_cwd, NULL);
|
||||||
|
|
||||||
job = job_alloc();
|
job = job_alloc();
|
||||||
if (job == NULL)
|
if (job == NULL)
|
||||||
@@ -3152,7 +3158,7 @@ term_and_job_init(
|
|||||||
WINPTY_SPAWN_FLAG_EXIT_AFTER_SHUTDOWN,
|
WINPTY_SPAWN_FLAG_EXIT_AFTER_SHUTDOWN,
|
||||||
NULL,
|
NULL,
|
||||||
cmd_wchar,
|
cmd_wchar,
|
||||||
NULL,
|
cwd_wchar,
|
||||||
NULL,
|
NULL,
|
||||||
&winpty_err);
|
&winpty_err);
|
||||||
if (spawn_config == NULL)
|
if (spawn_config == NULL)
|
||||||
@@ -3203,6 +3209,7 @@ term_and_job_init(
|
|||||||
|
|
||||||
winpty_spawn_config_free(spawn_config);
|
winpty_spawn_config_free(spawn_config);
|
||||||
vim_free(cmd_wchar);
|
vim_free(cmd_wchar);
|
||||||
|
vim_free(cwd_wchar);
|
||||||
|
|
||||||
create_vterm(term, term->tl_rows, term->tl_cols);
|
create_vterm(term, term->tl_rows, term->tl_cols);
|
||||||
|
|
||||||
@@ -3226,8 +3233,8 @@ term_and_job_init(
|
|||||||
failed:
|
failed:
|
||||||
if (argvar->v_type == VAR_LIST)
|
if (argvar->v_type == VAR_LIST)
|
||||||
vim_free(ga.ga_data);
|
vim_free(ga.ga_data);
|
||||||
if (cmd_wchar != NULL)
|
|
||||||
vim_free(cmd_wchar);
|
vim_free(cmd_wchar);
|
||||||
|
vim_free(cwd_wchar);
|
||||||
if (spawn_config != NULL)
|
if (spawn_config != NULL)
|
||||||
winpty_spawn_config_free(spawn_config);
|
winpty_spawn_config_free(spawn_config);
|
||||||
if (channel != NULL)
|
if (channel != NULL)
|
||||||
|
@@ -396,14 +396,13 @@ func Test_finish_open_close()
|
|||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_terminal_cwd()
|
func Test_terminal_cwd()
|
||||||
if !has('unix')
|
if !executable('pwd')
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
call mkdir('Xdir')
|
call mkdir('Xdir')
|
||||||
let buf = term_start('pwd', {'cwd': 'Xdir'})
|
let buf = term_start('pwd', {'cwd': 'Xdir'})
|
||||||
sleep 100m
|
call WaitFor('"Xdir" == fnamemodify(getline(1), ":t")')
|
||||||
call term_wait(buf)
|
call assert_equal('Xdir', fnamemodify(getline(1), ":t"))
|
||||||
call assert_equal(getcwd() . '/Xdir', getline(1))
|
|
||||||
|
|
||||||
exe buf . 'bwipe'
|
exe buf . 'bwipe'
|
||||||
call delete('Xdir', 'rf')
|
call delete('Xdir', 'rf')
|
||||||
@@ -603,6 +602,8 @@ func Test_terminal_redir_file()
|
|||||||
call term_wait(buf)
|
call term_wait(buf)
|
||||||
call WaitFor('len(readfile("Xfile")) > 0')
|
call WaitFor('len(readfile("Xfile")) > 0')
|
||||||
call assert_match('123', readfile('Xfile')[0])
|
call assert_match('123', readfile('Xfile')[0])
|
||||||
|
let g:job = term_getjob(buf)
|
||||||
|
call WaitFor('job_status(g:job) == "dead"')
|
||||||
call delete('Xfile')
|
call delete('Xfile')
|
||||||
bwipe
|
bwipe
|
||||||
endif
|
endif
|
||||||
|
@@ -769,6 +769,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 */
|
||||||
|
/**/
|
||||||
|
1087,
|
||||||
/**/
|
/**/
|
||||||
1086,
|
1086,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user