Mercurial > vim
changeset 12415:cd66083e371e v8.0.1087
patch 8.0.1087: Test_terminal_cwd is flaky
commit https://github.com/vim/vim/commit/e9f6fd27d0e2dcae3f4aa40c459d5e6a3b3dd102
Author: Bram Moolenaar <Bram@vim.org>
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.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 10 Sep 2017 14:30:03 +0200 |
parents | 46622370ce1e |
children | 6934cf541616 |
files | src/terminal.c src/testdir/test_terminal.vim src/version.c |
diffstat | 3 files changed, 18 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- 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)
--- 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