0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

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:
Bram Moolenaar
2017-09-10 14:25:49 +02:00
parent 8696bbaf52
commit e9f6fd27d0
3 changed files with 18 additions and 8 deletions

View File

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

View File

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

View File

@@ -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,
/**/ /**/