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