diff src/testdir/test_terminal.vim @ 12009:0d9bfdb3f6f7 v8.0.0885

patch 8.0.0885: terminal window scrollback is stored inefficiently commit https://github.com/vim/vim/commit/33a43bee9cdc62f9cd0999eb23c6eca01b4d2d67 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Aug 6 21:36:22 2017 +0200 patch 8.0.0885: terminal window scrollback is stored inefficiently Problem: Terminal window scrollback is stored inefficiently. Solution: Store the text in the Vim buffer.
author Christian Brabandt <cb@256bit.org>
date Sun, 06 Aug 2017 21:45:03 +0200
parents 5cc005cf312f
children 1f4e7361ce89
line wrap: on
line diff
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -97,7 +97,7 @@ func! s:Nasty_exit_cb(job, st)
 endfunc
 
 func Test_terminal_nasty_cb()
-  let cmd = Get_cat_cmd()
+  let cmd = Get_cat_123_cmd()
   let g:buf = term_start(cmd, {'exit_cb': function('s:Nasty_exit_cb')})
   let g:job = term_getjob(g:buf)
 
@@ -135,7 +135,7 @@ func Check_123(buf)
   call assert_equal('123', l)
 endfunc
 
-func Get_cat_cmd()
+func Get_cat_123_cmd()
   if has('win32')
     return 'cmd /c "cls && color 2 && echo 123"'
   else
@@ -144,8 +144,8 @@ func Get_cat_cmd()
   endif
 endfunc
 
-func Test_terminal_scrape()
-  let cmd = Get_cat_cmd()
+func Test_terminal_scrape_123()
+  let cmd = Get_cat_123_cmd()
   let buf = term_start(cmd)
 
   let termlist = term_list()
@@ -172,8 +172,46 @@ func Test_terminal_scrape()
   call delete('Xtext')
 endfunc
 
+func Test_terminal_scrape_multibyte()
+  if !has('multi_byte')
+    return
+  endif
+  call writefile(["léttまrs"], 'Xtext')
+  if has('win32')
+    let cmd = 'cmd /c "type Xtext"'
+  else
+    let cmd = "cat Xtext"
+  endif
+  let buf = term_start(cmd)
+
+  call term_wait(buf)
+  if has('win32')
+    " TODO: this should not be needed
+    sleep 100m
+  endif
+
+  let l = term_scrape(buf, 1)
+  call assert_true(len(l) >= 7)
+  call assert_equal('l', l[0].chars)
+  call assert_equal('é', l[1].chars)
+  call assert_equal(1, l[1].width)
+  call assert_equal('t', l[2].chars)
+  call assert_equal('t', l[3].chars)
+  call assert_equal('ま', l[4].chars)
+  call assert_equal(2, l[4].width)
+  call assert_equal('r', l[5].chars)
+  call assert_equal('s', l[6].chars)
+
+  let g:job = term_getjob(buf)
+  call WaitFor('job_status(g:job) == "dead"')
+  call term_wait(buf)
+
+  exe buf . 'bwipe'
+  call delete('Xtext')
+endfunc
+
 func Test_terminal_size()
-  let cmd = Get_cat_cmd()
+  let cmd = Get_cat_123_cmd()
 
   exe '5terminal ' . cmd
   let size = term_getsize('')