Patch 8.0.1260 (after 8.0.1259)
Problem:    Using global variables for WaitFor().
Solution:   Use a lambda function instead.  Don't check a condition if
            WaitFor() already checked it.
Files:      src/testdir/test_popup.vim, src/testdir/test_terminal.vim,
            src/testdir/test_channel.vim, src/test_clientserver.vim,
            src/testdir/test_job_fails.vim, src/testdir/test_quotestar.vim


*** ../vim-8.0.1259/src/testdir/test_popup.vim  2017-11-02 17:50:09.901161926 
+0100
--- src/testdir/test_popup.vim  2017-11-04 19:00:06.614425265 +0100
***************
*** 638,667 ****
      return
    endif
    let rows = h / 3
!   let g:buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile'], 
{'term_rows': rows})
!   call term_sendkeys(g:buf, (h / 3 - 1) . "o\<esc>")
    " Wait for the nested Vim to exit insert mode, where it will show the ruler.
    " Need to trigger a redraw.
!   call WaitFor(printf('execute("redraw") == "" && term_getline(g:buf, %d) =~ 
"\\<%d,.*Bot"', rows, rows))
  
!   call term_sendkeys(g:buf, "Gi\<c-x>")
!   call term_sendkeys(g:buf, "\<c-v>")
!   call term_wait(g:buf, 100)
    " popup first entry "!" must be at the top
!   call WaitFor('term_getline(g:buf, 1) =~ "^!"')
!   call assert_match('^!\s*$', term_getline(g:buf, 1))
    exe 'resize +' . (h - 1)
!   call term_wait(g:buf, 100)
    redraw!
    " popup shifted down, first line is now empty
!   call WaitFor('term_getline(g:buf, 1) == ""')
!   call assert_equal('', term_getline(g:buf, 1))
    sleep 100m
    " popup is below cursor line and shows first match "!"
!   call WaitFor('term_getline(g:buf, term_getcursor(g:buf)[0] + 1) =~ "^!"')
!   call assert_match('^!\s*$', term_getline(g:buf, term_getcursor(g:buf)[0] + 
1))
    " cursor line also shows !
!   call assert_match('^!\s*$', term_getline(g:buf, term_getcursor(g:buf)[0]))
    bwipe!
  endfunc
  
--- 638,667 ----
      return
    endif
    let rows = h / 3
!   let buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile'], 
{'term_rows': rows})
!   call term_sendkeys(buf, (h / 3 - 1) . "o\<esc>")
    " Wait for the nested Vim to exit insert mode, where it will show the ruler.
    " Need to trigger a redraw.
!   call WaitFor({-> execute("redraw") == "" && term_getline(buf, rows) =~ '\<' 
. rows . ',.*Bot'})
  
!   call term_sendkeys(buf, "Gi\<c-x>")
!   call term_sendkeys(buf, "\<c-v>")
!   call term_wait(buf, 100)
    " popup first entry "!" must be at the top
!   call WaitFor({-> term_getline(buf, 1) =~ "^!"})
!   call assert_match('^!\s*$', term_getline(buf, 1))
    exe 'resize +' . (h - 1)
!   call term_wait(buf, 100)
    redraw!
    " popup shifted down, first line is now empty
!   call WaitFor({-> term_getline(buf, 1) == ""})
!   call assert_equal('', term_getline(buf, 1))
    sleep 100m
    " popup is below cursor line and shows first match "!"
!   call WaitFor({-> term_getline(buf, term_getcursor(buf)[0] + 1) =~ "^!"})
!   call assert_match('^!\s*$', term_getline(buf, term_getcursor(buf)[0] + 1))
    " cursor line also shows !
!   call assert_match('^!\s*$', term_getline(buf, term_getcursor(buf)[0]))
    bwipe!
  endfunc
  
*** ../vim-8.0.1259/src/testdir/test_terminal.vim       2017-11-02 
16:57:54.379496792 +0100
--- src/testdir/test_terminal.vim       2017-11-04 19:08:11.639701000 +0100
***************
*** 189,203 ****
    call term_wait(1234)
  
    call term_wait(buf)
-   let g:buf = buf
    " On MS-Windows we first get a startup message of two lines, wait for the
    " "cls" to happen, after that we have one line with three characters.
!   call WaitFor('len(term_scrape(g:buf, 1)) == 3')
    call Check_123(buf)
  
    " Must still work after the job ended.
!   let g:job = term_getjob(buf)
!   call WaitFor('job_status(g:job) == "dead"')
    call term_wait(buf)
    call Check_123(buf)
  
--- 189,202 ----
    call term_wait(1234)
  
    call term_wait(buf)
    " On MS-Windows we first get a startup message of two lines, wait for the
    " "cls" to happen, after that we have one line with three characters.
!   call WaitFor({-> len(term_scrape(buf, 1)) == 3})
    call Check_123(buf)
  
    " Must still work after the job ended.
!   let job = term_getjob(buf)
!   call WaitFor({-> job_status(job) == "dead"})
    call term_wait(buf)
    call Check_123(buf)
  
***************
*** 213,229 ****
    if has('win32')
      " Run cmd with UTF-8 codepage to make the type command print the expected
      " multibyte characters.
!     let g:buf = term_start("cmd /K chcp 65001")
!     call term_sendkeys(g:buf, "type Xtext\<CR>")
!     call term_sendkeys(g:buf, "exit\<CR>")
!     let g:line = 4
    else
!     let g:buf = term_start("cat Xtext")
!     let g:line = 1
    endif
  
!   call WaitFor('len(term_scrape(g:buf, g:line)) >= 7 && term_scrape(g:buf, 
g:line)[0].chars == "l"')
!   let l = term_scrape(g:buf, g:line)
    call assert_true(len(l) >= 7)
    call assert_equal('l', l[0].chars)
    call assert_equal('é', l[1].chars)
--- 212,228 ----
    if has('win32')
      " Run cmd with UTF-8 codepage to make the type command print the expected
      " multibyte characters.
!     let buf = term_start("cmd /K chcp 65001")
!     call term_sendkeys(buf, "type Xtext\<CR>")
!     call term_sendkeys(buf, "exit\<CR>")
!     let line = 4
    else
!     let buf = term_start("cat Xtext")
!     let line = 1
    endif
  
!   call WaitFor({-> len(term_scrape(buf, line)) >= 7 && term_scrape(buf, 
line)[0].chars == "l"})
!   let l = term_scrape(buf, line)
    call assert_true(len(l) >= 7)
    call assert_equal('l', l[0].chars)
    call assert_equal('é', l[1].chars)
***************
*** 235,247 ****
    call assert_equal('r', l[5].chars)
    call assert_equal('s', l[6].chars)
  
!   let g:job = term_getjob(g:buf)
!   call WaitFor('job_status(g:job) == "dead"')
!   call term_wait(g:buf)
  
!   exe g:buf . 'bwipe'
!   unlet g:buf
!   unlet g:line
    call delete('Xtext')
  endfunc
  
--- 234,244 ----
    call assert_equal('r', l[5].chars)
    call assert_equal('s', l[6].chars)
  
!   let job = term_getjob(buf)
!   call WaitFor({-> job_status(job) == "dead"})
!   call term_wait(buf)
  
!   exe buf . 'bwipe'
    call delete('Xtext')
  endfunc
  
***************
*** 254,261 ****
    endif
    let buf = term_start(cmd)
  
!   let g:job = term_getjob(buf)
!   call WaitFor('job_status(g:job) == "dead"')
    call term_wait(buf)
    if has('win32')
      " TODO: this should not be needed
--- 251,258 ----
    endif
    let buf = term_start(cmd)
  
!   let job = term_getjob(buf)
!   call WaitFor({-> job_status(job) == "dead"})
    call term_wait(buf)
    if has('win32')
      " TODO: this should not be needed
***************
*** 483,489 ****
  endfunction
  
  func Test_terminal_noblock()
!   let g:buf = term_start(&shell)
    if has('mac')
      " The shell or something else has a problem dealing with more than 1000
      " characters at the same time.
--- 480,486 ----
  endfunction
  
  func Test_terminal_noblock()
!   let buf = term_start(&shell)
    if has('mac')
      " The shell or something else has a problem dealing with more than 1000
      " characters at the same time.
***************
*** 493,518 ****
    endif
  
    for c in ['a','b','c','d','e','f','g','h','i','j','k']
!     call term_sendkeys(g:buf, 'echo ' . repeat(c, len) . "\<cr>")
    endfor
!   call term_sendkeys(g:buf, "echo done\<cr>")
  
    " On MS-Windows there is an extra empty line below "done".  Find "done" in
    " the last-but-one or the last-but-two line.
!   let g:lnum = term_getsize(g:buf)[0] - 1
!   call WaitFor('term_getline(g:buf, g:lnum) =~ "done" || term_getline(g:buf, 
g:lnum - 1) =~ "done"', 3000)
!   let line = term_getline(g:buf, g:lnum)
    if line !~ 'done'
!     let line = term_getline(g:buf, g:lnum - 1)
    endif
    call assert_match('done', line)
  
!   let g:job = term_getjob(g:buf)
!   call Stop_shell_in_terminal(g:buf)
!   call term_wait(g:buf)
!   unlet g:buf
    unlet g:job
-   unlet g:lnum
    bwipe
  endfunc
  
--- 490,513 ----
    endif
  
    for c in ['a','b','c','d','e','f','g','h','i','j','k']
!     call term_sendkeys(buf, 'echo ' . repeat(c, len) . "\<cr>")
    endfor
!   call term_sendkeys(buf, "echo done\<cr>")
  
    " On MS-Windows there is an extra empty line below "done".  Find "done" in
    " the last-but-one or the last-but-two line.
!   let lnum = term_getsize(buf)[0] - 1
!   call WaitFor({-> term_getline(buf, lnum) =~ "done" || term_getline(buf, 
lnum - 1) =~ "done"}, 3000)
!   let line = term_getline(buf, lnum)
    if line !~ 'done'
!     let line = term_getline(buf, lnum - 1)
    endif
    call assert_match('done', line)
  
!   let g:job = term_getjob(buf)
!   call Stop_shell_in_terminal(buf)
!   call term_wait(buf)
    unlet g:job
    bwipe
  endfunc
  
*** ../vim-8.0.1259/src/testdir/test_channel.vim        2017-11-02 
16:57:54.379496792 +0100
--- src/testdir/test_channel.vim        2017-11-04 19:11:31.674579429 +0100
***************
*** 274,285 ****
    " Test that it works while waiting on a numbered message.
    call assert_equal('ok', ch_evalexpr(handle, 'call me'))
    call WaitFor('"we called you" == g:Ch_reply')
-   call assert_equal('we called you', g:Ch_reply)
  
    " Test that it works while not waiting on a numbered message.
    call ch_sendexpr(handle, 'call me again')
    call WaitFor('"we did call you" == g:Ch_reply')
-   call assert_equal('we did call you', g:Ch_reply)
  endfunc
  
  func Test_channel_handler()
--- 274,283 ----
***************
*** 322,328 ****
    call assert_equal('sent zero', ch_evalexpr(handle, 'send zero'))
    if s:has_handler
      call WaitFor('"zero index" == g:Ch_reply')
-     call assert_equal('zero index', g:Ch_reply)
    else
      sleep 20m
      call assert_equal('', g:Ch_reply)
--- 320,325 ----
***************
*** 338,344 ****
    else
      call assert_equal('', g:Ch_reply)
    endif
-   call assert_equal('sent zero', g:Ch_zero_reply)
  endfunc
  
  func Test_zero_reply()
--- 335,340 ----
***************
*** 1468,1474 ****
    let g:exit_cb_val = {'start': reltime(), 'end': 0, 'process': 0}
    let job = job_start([s:python, '-c', 'import time;time.sleep(0.5)'], 
{'exit_cb': 'MyExitTimeCb'})
    let g:exit_cb_val.process = job_info(job).process
!   call WaitFor('type(g:exit_cb_val.end) != v:t_number || g:exit_cb_val.end != 
0')
    let elapsed = reltimefloat(g:exit_cb_val.end)
    call assert_true(elapsed > 0.5)
    call assert_true(elapsed < 1.0)
--- 1464,1470 ----
    let g:exit_cb_val = {'start': reltime(), 'end': 0, 'process': 0}
    let job = job_start([s:python, '-c', 'import time;time.sleep(0.5)'], 
{'exit_cb': 'MyExitTimeCb'})
    let g:exit_cb_val.process = job_info(job).process
!   call WaitFor('type(g:exit_cb_val.end) != v:t_number || g:exit_cb_val.end != 
0', 2000)
    let elapsed = reltimefloat(g:exit_cb_val.end)
    call assert_true(elapsed > 0.5)
    call assert_true(elapsed < 1.0)
*** ../vim-8.0.1259/src/testdir/test_clientserver.vim   2017-11-02 
19:22:58.664420704 +0100
--- src/testdir/test_clientserver.vim   2017-11-04 19:16:12.640979073 +0100
***************
*** 27,38 ****
  
    let name = 'XVIMTEST'
    let cmd .= ' --servername ' . name
!   let g:job = job_start(cmd, {'stoponexit': 'kill', 'out_io': 'null'})
!   call WaitFor('job_status(g:job) == "run"')
!   if job_status(g:job) != 'run'
!     call assert_report('Cannot run the Vim server')
!     return
!   endif
  
    " Takes a short while for the server to be active.
    " When using valgrind it takes much longer.
--- 27,34 ----
  
    let name = 'XVIMTEST'
    let cmd .= ' --servername ' . name
!   let job = job_start(cmd, {'stoponexit': 'kill', 'out_io': 'null'})
!   call WaitFor({-> job_status(job) == "run"})
  
    " Takes a short while for the server to be active.
    " When using valgrind it takes much longer.
***************
*** 83,89 ****
    call remote_send(name, ":call server2client(expand('<client>'), 
'another')\<CR>", 'g:myserverid')
    let peek_result = 'nothing'
    let r = remote_peek(g:myserverid, 'peek_result')
!   " unpredictable whether the result is already avaialble.
    if r > 0
      call assert_equal('another', peek_result)
    elseif r == 0
--- 79,85 ----
    call remote_send(name, ":call server2client(expand('<client>'), 
'another')\<CR>", 'g:myserverid')
    let peek_result = 'nothing'
    let r = remote_peek(g:myserverid, 'peek_result')
!   " unpredictable whether the result is already available.
    if r > 0
      call assert_equal('another', peek_result)
    elseif r == 0
***************
*** 97,107 ****
    call assert_equal('another', remote_read(g:myserverid, 2))
  
    call remote_send(name, ":qa!\<CR>")
!   call WaitFor('job_status(g:job) == "dead"')
!   if job_status(g:job) != 'dead'
!     call assert_report('Server did not exit')
!     call job_stop(g:job, 'kill')
!   endif
  endfunc
  
  " Uncomment this line to get a debugging log
--- 93,106 ----
    call assert_equal('another', remote_read(g:myserverid, 2))
  
    call remote_send(name, ":qa!\<CR>")
!   try
!     call WaitFor({-> job_status(job) == "dead"})
!   finally
!     if job_status(job) != 'dead'
!       call assert_report('Server did not exit')
!       call job_stop(job, 'kill')
!     endif
!   endtry
  endfunc
  
  " Uncomment this line to get a debugging log
*** ../vim-8.0.1259/src/testdir/test_job_fails.vim      2016-08-05 
19:27:24.000000000 +0200
--- src/testdir/test_job_fails.vim      2017-11-04 19:17:19.936597352 +0100
***************
*** 6,19 ****
  
  func Test_job_start_fails()
    if has('job')
!     let g:job = job_start('axdfxsdf')
      if has('unix')
!       call WaitFor('job_status(g:job) == "dead"')
!       call assert_equal('dead', job_status(g:job))
      else
!       call WaitFor('job_status(g:job) == "fail"')
!       call assert_equal('fail', job_status(g:job))
      endif
-     unlet g:job
    endif
  endfunc
--- 6,16 ----
  
  func Test_job_start_fails()
    if has('job')
!     let job = job_start('axdfxsdf')
      if has('unix')
!       call WaitFor({-> job_status(job) == "dead"})
      else
!       call WaitFor({-> job_status(job) == "fail"})
      endif
    endif
  endfunc
*** ../vim-8.0.1259/src/testdir/test_quotestar.vim      2017-07-19 
19:55:54.494463778 +0200
--- src/testdir/test_quotestar.vim      2017-11-04 19:19:02.832014658 +0100
***************
*** 60,71 ****
    call assert_notmatch(name, serverlist())
  
    let cmd .= ' --servername ' . name
!   let g:job = job_start(cmd, {'stoponexit': 'kill', 'out_io': 'null'})
!   call WaitFor('job_status(g:job) == "run"')
!   if job_status(g:job) != 'run'
!     call assert_report('Cannot run the Vim server')
!     return ''
!   endif
  
    " Takes a short while for the server to be active.
    call WaitFor('serverlist() =~ "' . name . '"')
--- 60,67 ----
    call assert_notmatch(name, serverlist())
  
    let cmd .= ' --servername ' . name
!   let job = job_start(cmd, {'stoponexit': 'kill', 'out_io': 'null'})
!   call WaitFor({-> job_status(job) == "run"})
  
    " Takes a short while for the server to be active.
    call WaitFor('serverlist() =~ "' . name . '"')
***************
*** 124,134 ****
    endif
  
    call remote_send(name, ":qa!\<CR>")
!   call WaitFor('job_status(g:job) == "dead"')
!   if job_status(g:job) != 'dead'
!     call assert_report('Server did not exit')
!     call job_stop(g:job, 'kill')
!   endif
  
    return ''
  endfunc
--- 120,133 ----
    endif
  
    call remote_send(name, ":qa!\<CR>")
!   try
!     call WaitFor({-> job_status(job) == "dead"})
!   finally
!     if job_status(job) != 'dead'
!       call assert_report('Server did not exit')
!       call job_stop(job, 'kill')
!     endif
!   endtry
  
    return ''
  endfunc
*** ../vim-8.0.1259/src/version.c       2017-11-04 18:48:39.174316914 +0100
--- src/version.c       2017-11-04 19:23:35.794473131 +0100
***************
*** 763,764 ****
--- 763,766 ----
  {   /* Add new patch number below this line */
+ /**/
+     1260,
  /**/

-- 
No man may purchase alcohol without written consent from his wife.
                [real standing law in Pennsylvania, United States of America]

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui