@@ -56,6 +56,7 @@ func VerifyScreenDump(buf, filename, options, ...)
5656
5757 " Starting a terminal to make a screendump is always considered flaky.
5858 let g: test_is_flaky = 1
59+ let g: giveup_same_error = 0
5960
6061 " wait for the pending updates to be handled.
6162 call TermWait (a: buf )
@@ -83,41 +84,55 @@ func VerifyScreenDump(buf, filename, options, ...)
8384 sleep 50 m
8485 call delete (testfile)
8586 call term_dumpwrite (a: buf , testfile, a: options )
87+
88+ if refdump- >empty ()
89+ let msg = ' See new dump file: call term_dumpload("testdir/' .. testfile .. ' ")'
90+ call assert_report (msg)
91+ " no point in retrying
92+ let g: run_nr = 10
93+ return 1
94+ endif
95+
8696 let testdump = ReadAndFilter (testfile, filter )
8797 if refdump == testdump
8898 call delete (testfile)
8999 if did_mkdir
90100 call delete (' failed' , ' d' )
91101 endif
102+ if i > 0
103+ call remove (v: errors , -1 )
104+ endif
92105 break
93106 endif
94- if i == max_loops
95- " Leave the failed dump around for inspection.
96- if filereadable (reference)
97- let msg = ' See dump file difference: call term_dumpdiff("testdir/' .. testfile .. ' ", "testdir/' .. reference .. ' ")'
98- if a: 0 == 1
99- let msg = a: 1 . ' : ' . msg
100- endif
101- if len (testdump) != len (refdump)
102- let msg = msg . ' ; line count is ' . len (testdump) . ' instead of ' . len (refdump)
103- endif
104- else
105- let msg = ' See new dump file: call term_dumpload("testdir/' .. testfile .. ' ")'
106- " no point in retrying
107- let g: run_nr = 10
107+
108+ " Leave the failed dump around for inspection.
109+ let msg = ' See dump file difference: call term_dumpdiff("testdir/' .. testfile .. ' ", "testdir/' .. reference .. ' ")'
110+ if a: 0 == 1
111+ let msg = a: 1 . ' : ' . msg
112+ endif
113+ if len (testdump) != len (refdump)
114+ let msg = msg . ' ; line count is ' . len (testdump) . ' instead of ' . len (refdump)
115+ endif
116+ for j in range (len (refdump))
117+ if j >= len (testdump)
118+ break
108119 endif
109- for i in range (len (refdump))
110- if i >= len (testdump)
111- break
112- endif
113- if testdump[i ] != refdump[i ]
114- let msg = msg . ' ; difference in line ' . (i + 1 ) . ' : "' . testdump[i ] . ' "'
115- endif
116- endfor
117- call assert_report (msg)
118- return 1
120+ if testdump[j ] != refdump[j ]
121+ let msg = msg . ' ; difference in line ' . (j + 1 ) . ' : "' . testdump[j ] . ' "'
122+ endif
123+ endfor
124+
125+ " Always add the last error so that it is displayed on timeout.
126+ " See TestTimeout() in runtest.vim.
127+ if i > 0
128+ call remove (v: errors , -1 )
119129 endif
130+ call assert_report (msg)
131+
120132 let i += 1
133+ if i >= max_loops
134+ return 1
135+ endif
121136 endwhile
122137 return 0
123138endfunc
0 commit comments