summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-03-18 21:22:47 +0100
committerBram Moolenaar <Bram@vim.org>2017-03-18 21:22:47 +0100
commit15e737f768542fcc516296b5c158e14cc7ba7feb (patch)
tree28c33faaaa131e2f42c6e756d21979f60953addf
parent6caf606b144bbe2bf3ac515a194f5ff18fdfd331 (diff)
downloadvim-git-15e737f768542fcc516296b5c158e14cc7ba7feb.tar.gz
patch 8.0.0480: the remote_peek() test fails on MS-Windowsv8.0.0480
Problem: The remote_peek() test fails on MS-Windows. Solution: Check for pending messages. Also report errors in the first run if a flaky test fails twice.
-rw-r--r--src/os_mswin.c11
-rw-r--r--src/testdir/runtest.vim9
-rw-r--r--src/version.c2
3 files changed, 22 insertions, 0 deletions
diff --git a/src/os_mswin.c b/src/os_mswin.c
index 45b14783a..bddb08d92 100644
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -2526,6 +2526,7 @@ serverGetReply(HWND server, int *expr_res, int remove, int wait)
int i;
char_u *reply;
reply_T *rep;
+ int did_process = FALSE;
/* When waiting, loop until the message waiting for is received. */
for (;;)
@@ -2562,7 +2563,17 @@ serverGetReply(HWND server, int *expr_res, int remove, int wait)
/* If we got here, we didn't find a reply. Return immediately if the
* "wait" parameter isn't set. */
if (!wait)
+ {
+ /* Process pending messages once. Without this, looping on
+ * remote_peek() would never get the reply. */
+ if (!did_process)
+ {
+ did_process = TRUE;
+ serverProcessPendingMessages();
+ continue;
+ }
break;
+ }
/* We need to wait for a reply. Enter a message loop until the
* "reply_received" flag gets set. */
diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim
index b89644378..1d694b5cf 100644
--- a/src/testdir/runtest.vim
+++ b/src/testdir/runtest.vim
@@ -250,8 +250,17 @@ for s:test in sort(s:tests)
call add(s:messages, 'Found errors in ' . s:test . ':')
call extend(s:messages, v:errors)
call add(s:messages, 'Flaky test failed, running it again')
+ let first_run = v:errors
+
let v:errors = []
call RunTheTest(s:test)
+ if len(v:errors) > 0
+ let second_run = v:errors
+ let v:errors = ['First run:']
+ call extend(v:errors, first_run)
+ call add(v:errors, 'Second run:')
+ call extend(v:errors, second_run)
+ endif
endif
call AfterTheTest()
diff --git a/src/version.c b/src/version.c
index cfafa3fd7..69b4990d2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 480,
+/**/
479,
/**/
478,