# HG changeset patch # User Christian Brabandt # Date 1505046603 -7200 # Node ID cd66083e371e54ca3dd69ab6256b068759932951 # Parent 46622370ce1e42e7f922b875548bc15a6cca69ed patch 8.0.1087: Test_terminal_cwd is flaky commit https://github.com/vim/vim/commit/e9f6fd27d0e2dcae3f4aa40c459d5e6a3b3dd102 Author: Bram Moolenaar Date: Sun Sep 10 14:25:49 2017 +0200 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. diff --git a/src/terminal.c b/src/terminal.c --- a/src/terminal.c +++ b/src/terminal.c @@ -38,8 +38,11 @@ * in tl_scrollback are no longer used. * * TODO: - * - check for memory leaks * - 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. * - implement term_setsize() * - add test for giving error for invalid 'termsize' value. @@ -3099,6 +3102,7 @@ term_and_job_init( jobopt_T *opt) { WCHAR *cmd_wchar = NULL; + WCHAR *cwd_wchar = NULL; channel_T *channel = NULL; job_T *job = NULL; DWORD error; @@ -3126,6 +3130,8 @@ term_and_job_init( cmd_wchar = enc_to_utf16(cmd, NULL); if (cmd_wchar == NULL) return FAIL; + if (opt->jo_cwd != NULL) + cwd_wchar = enc_to_utf16(opt->jo_cwd, NULL); job = job_alloc(); if (job == NULL) @@ -3152,7 +3158,7 @@ term_and_job_init( WINPTY_SPAWN_FLAG_EXIT_AFTER_SHUTDOWN, NULL, cmd_wchar, - NULL, + cwd_wchar, NULL, &winpty_err); if (spawn_config == NULL) @@ -3203,6 +3209,7 @@ term_and_job_init( winpty_spawn_config_free(spawn_config); vim_free(cmd_wchar); + vim_free(cwd_wchar); create_vterm(term, term->tl_rows, term->tl_cols); @@ -3226,8 +3233,8 @@ term_and_job_init( failed: if (argvar->v_type == VAR_LIST) 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) winpty_spawn_config_free(spawn_config); if (channel != NULL) diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim --- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -396,14 +396,13 @@ func Test_finish_open_close() endfunc func Test_terminal_cwd() - if !has('unix') + if !executable('pwd') return endif call mkdir('Xdir') let buf = term_start('pwd', {'cwd': 'Xdir'}) - sleep 100m - call term_wait(buf) - call assert_equal(getcwd() . '/Xdir', getline(1)) + call WaitFor('"Xdir" == fnamemodify(getline(1), ":t")') + call assert_equal('Xdir', fnamemodify(getline(1), ":t")) exe buf . 'bwipe' call delete('Xdir', 'rf') @@ -603,6 +602,8 @@ func Test_terminal_redir_file() call term_wait(buf) call WaitFor('len(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') bwipe endif diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -770,6 +770,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1087, +/**/ 1086, /**/ 1085,