summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-01-23 22:33:18 +0100
committerBram Moolenaar <Bram@vim.org>2019-01-23 22:33:18 +0100
commitcfc15237ab88ecb78b12030f6e04b87618b56124 (patch)
treec00c9593abe5dccd1e36108c9a6e29d15669d28c
parentdd29ea18050284526174b5685781469240f5bc4a (diff)
downloadvim-git-8.1.0799.tar.gz
patch 8.1.0799: calling deleted function; test doesn't work on Macv8.1.0799
Problem: Calling deleted function; test doesn't work on Mac. Solution: Wait for the function to be called before deleting it. Use a job to write to the pty, unless in the GUI. (Ozaki Kiichi, closes #3854)
-rw-r--r--src/testdir/test_channel.vim7
-rw-r--r--src/testdir/test_terminal.vim12
-rw-r--r--src/version.c2
3 files changed, 13 insertions, 8 deletions
diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim
index d3f36f88e..15ca9ddbb 100644
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -1945,10 +1945,11 @@ func Test_job_start_in_timer()
endif
func OutCb(chan, msg)
+ let g:val += 1
endfunc
func ExitCb(job, status)
- let g:val = 1
+ let g:val += 1
call Resume()
endfunc
@@ -1967,6 +1968,10 @@ func Test_job_start_in_timer()
call timer_start(1, 'TimerCb')
let elapsed = Standby(&ut)
call assert_inrange(1, &ut / 2, elapsed)
+
+ " Wait for both OutCb() and ExitCb() to have been called before deleting
+ " them.
+ call WaitForAssert({-> assert_equal(2, g:val)})
call job_stop(g:job)
delfunc OutCb
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index ea7d4b1b6..821154a9f 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -643,19 +643,17 @@ func Test_terminal_write_stdin()
endfunc
func Test_terminal_no_cmd()
- " Does not work on Mac.
- if has('mac')
- return
- endif
let buf = term_start('NONE', {})
call assert_notequal(0, buf)
let pty = job_info(term_getjob(buf))['tty_out']
call assert_notequal('', pty)
- if has('win32')
- silent exe '!start cmd /c "echo look here > ' . pty . '"'
- else
+ if has('gui_running') && !has('win32')
+ " In the GUI job_start() doesn't work, it does not read from the pty.
call system('echo "look here" > ' . pty)
+ else
+ " Otherwise using a job works on all systems.
+ call job_start([&shell, &shellcmdflag, 'echo "look here" > ' . pty])
endif
call WaitForAssert({-> assert_match('look here', term_getline(buf, 1))})
diff --git a/src/version.c b/src/version.c
index a260844d2..d5ea08645 100644
--- a/src/version.c
+++ b/src/version.c
@@ -792,6 +792,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 799,
+/**/
798,
/**/
797,