]> granicus.if.org Git - vim/commitdiff
patch 8.1.0603: the :stop command is not tested v8.1.0603
authorBram Moolenaar <Bram@vim.org>
Sun, 16 Dec 2018 15:16:10 +0000 (16:16 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 16 Dec 2018 15:16:10 +0000 (16:16 +0100)
Problem:    The :stop command is not tested.
Solution:   Test :stop using a terminal window.

src/testdir/shared.vim
src/testdir/test_terminal.vim
src/version.c

index 92aacfa345106210cacf0730b4fdfb839866f7d6..4546be7f7404db687927ef2e686a0b94e12a0f70 100644 (file)
@@ -345,3 +345,13 @@ func Stop_shell_in_terminal(buf)
   let job = term_getjob(a:buf)
   call WaitFor({-> job_status(job) == "dead"})
 endfunc
+
+" Gets the text of a terminal line, using term_scrape()
+func Get_terminal_text(bufnr, row)
+  let list = term_scrape(a:bufnr, a:row)
+  let text = ''
+  for item in list
+    let text .= item.chars
+  endfor
+  return text
+endfunc
index 70ea3dc94fd8f82b41f7d7935a9c658c31379d0f..d99a925f931cee35010e36ae1eee96aaf2a4a0f9 100644 (file)
@@ -1683,3 +1683,34 @@ func Test_terminal_does_not_truncate_last_newlines()
 
   call delete('Xfile')
 endfunc
+
+func Test_stop_in_terminal()
+  " We can't expect this to work on all systems, just test on Linux for now.
+  if !has('unix') || system('uname') !~ 'Linux'
+    return
+  endif
+  term /bin/sh
+  let bufnr = bufnr('')
+  call WaitForAssert({-> assert_equal('running', term_getstatus(bufnr))})
+  let lastrow = term_getsize(bufnr)[0]
+
+  call term_sendkeys(bufnr, GetVimCommandClean() . "\r")
+  call term_sendkeys(bufnr, ":echo 'ready'\r")
+  call WaitForAssert({-> assert_match('ready', Get_terminal_text(bufnr, lastrow))})
+
+  call term_sendkeys(bufnr, ":stop\r")
+  " Not sure where "Stopped" shows up, assume in the first three lines.
+  call WaitForAssert({-> assert_match('Stopped',
+       \ Get_terminal_text(bufnr, 1) . 
+       \ Get_terminal_text(bufnr, 2) . 
+       \ Get_terminal_text(bufnr, 3))})
+
+  call term_sendkeys(bufnr, "fg\r")
+  call term_sendkeys(bufnr, ":echo 'back again'\r")
+  call WaitForAssert({-> assert_match('back again', Get_terminal_text(bufnr, lastrow))})
+
+  call term_sendkeys(bufnr, ":quit\r")
+  call term_wait(bufnr)
+  call Stop_shell_in_terminal(bufnr)
+  exe bufnr . 'bwipe'
+endfunc
index f9154cd03d883c49fced7f136d2eebfcff4293af..c73a3ed72aacc12303ae92d3c1dc8ac8836de425 100644 (file)
@@ -799,6 +799,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    603,
 /**/
     602,
 /**/