diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-01-23 22:33:18 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-01-23 22:33:18 +0100 |
commit | cfc15237ab88ecb78b12030f6e04b87618b56124 (patch) | |
tree | c00c9593abe5dccd1e36108c9a6e29d15669d28c | |
parent | dd29ea18050284526174b5685781469240f5bc4a (diff) | |
download | vim-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.vim | 7 | ||||
-rw-r--r-- | src/testdir/test_terminal.vim | 12 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |