Patch 8.2.2980

5 views
Skip to first unread message

Bram Moolenaar

unread,
Jun 12, 2021, 8:00:04 AM6/12/21
to vim...@googlegroups.com

Patch 8.2.2980
Problem: Popup window test is a bit flaky.
Solution: Add a redraw command.
Files: src/testdir/test_popupwin.vim


diff --git a/src/testdir/test_recover.vim b/src/testdir/test_recover.vim
index 0df2082e330..2db662f017a 100644
--- a/src/testdir/test_recover.vim
+++ b/src/testdir/test_recover.vim
@@ -198,103 +198,102 @@ func Test_recover_corrupted_swap_file()
let b = readblob(sn)
let save_b = copy(b)
bw!
- " Run these tests only on little-endian systems. These tests fail on a
- " big-endian system (IBM S390x system).
- if b[1008:1011] == 0z33323130
- \ && b[4096:4097] == 0z7470
- \ && b[8192:8193] == 0z6164
-
- " clear the B0_MAGIC_LONG field
- let b[1008:1011] = 0z00000000
- call writefile(b, sn)
- let msg = execute('recover Xfile1')
- call assert_match('the file has been damaged', msg)
- call assert_equal('Xfile1', @%)
- call assert_equal([''], getline(1, '$'))
- bw!
-
- " reduce the page size
- let b = copy(save_b)
- let b[12:15] = 0z00010000
- call writefile(b, sn)
- let msg = execute('recover Xfile1')
- call assert_match('page size is smaller than minimum value', msg)
- call assert_equal('Xfile1', @%)
- call assert_equal([''], getline(1, '$'))
- bw!
-
- " clear the pointer ID
- let b = copy(save_b)
- let b[4096:4097] = 0z0000
- call writefile(b, sn)
- call assert_fails('recover Xfile1', 'E310:')
- call assert_equal('Xfile1', @%)
- call assert_equal([''], getline(1, '$'))
- bw!
-
- " set the number of pointers in a pointer block to zero
- let b = copy(save_b)
- let b[4098:4099] = 0z0000
- call writefile(b, sn)
- call assert_fails('recover Xfile1', 'E312:')
- call assert_equal('Xfile1', @%)
- call assert_equal(['???EMPTY BLOCK'], getline(1, '$'))
- bw!
-
- " set the block number in a pointer entry to a negative number
- let b = copy(save_b)
- let b[4104:4111] = 0z00000000.00000080
- call writefile(b, sn)
- call assert_fails('recover Xfile1', 'E312:')
- call assert_equal('Xfile1', @%)
- call assert_equal(['???LINES MISSING'], getline(1, '$'))
- bw!
-
- " clear the data block ID
- let b = copy(save_b)
- let b[8192:8193] = 0z0000
- call writefile(b, sn)
- call assert_fails('recover Xfile1', 'E312:')
- call assert_equal('Xfile1', @%)
- call assert_equal(['???BLOCK MISSING'], getline(1, '$'))
- bw!
-
- " set the number of lines in the data block to zero
- let b = copy(save_b)
- let b[8208:8211] = 0z00000000
- call writefile(b, sn)
- call assert_fails('recover Xfile1', 'E312:')
- call assert_equal('Xfile1', @%)
- call assert_equal(['??? from here until ???END lines may have been inserted/deleted',
- \ '???END'], getline(1, '$'))
- bw!
-
- " use an invalid text start for the lines in a data block
- let b = copy(save_b)
- let b[8216:8219] = 0z00000000
- call writefile(b, sn)
- call assert_fails('recover Xfile1', 'E312:')
- call assert_equal('Xfile1', @%)
- call assert_equal(['???'], getline(1, '$'))
- bw!
-
- " use an incorrect text end (db_txt_end) for the data block
- let b = copy(save_b)
- let b[8204:8207] = 0z80000000
- call writefile(b, sn)
- call assert_fails('recover Xfile1', 'E312:')
- call assert_equal('Xfile1', @%)
- call assert_equal(['??? from here until ???END lines may be messed up', '',
- \ '???END'], getline(1, '$'))
- bw!
-
- " remove the data block
- let b = copy(save_b)
- call writefile(b[:8191], sn)
- call assert_fails('recover Xfile1', 'E312:')
- call assert_equal('Xfile1', @%)
- call assert_equal(['???MANY LINES MISSING'], getline(1, '$'))
- endif
+
+ " Not all fields are written in a system-independent manner. Detect whether
+ " the test is running on a little or big-endian system, so the correct
+ " corruption values can be set.
+ let little_endian = b[1008:1015] == 0z33323130.00000000
+
+ " clear the B0_MAGIC_LONG field
+ let b[1008:1015] = 0z0000000000000000
+ call writefile(b, sn)
+ let msg = execute('recover Xfile1')
+ call assert_match('the file has been damaged', msg)
+ call assert_equal('Xfile1', @%)
+ call assert_equal([''], getline(1, '$'))
+ bw!
+
+ " reduce the page size
+ let b = copy(save_b)
+ let b[12:15] = 0z00010000
+ call writefile(b, sn)
+ let msg = execute('recover Xfile1')
+ call assert_match('page size is smaller than minimum value', msg)
+ call assert_equal('Xfile1', @%)
+ call assert_equal([''], getline(1, '$'))
+ bw!
+
+ " clear the pointer ID
+ let b = copy(save_b)
+ let b[4096:4097] = 0z0000
+ call writefile(b, sn)
+ call assert_fails('recover Xfile1', 'E310:')
+ call assert_equal('Xfile1', @%)
+ call assert_equal([''], getline(1, '$'))
+ bw!
+
+ " set the number of pointers in a pointer block to zero
+ let b = copy(save_b)
+ let b[4098:4099] = 0z0000
+ call writefile(b, sn)
+ call assert_fails('recover Xfile1', 'E312:')
+ call assert_equal('Xfile1', @%)
+ call assert_equal(['???EMPTY BLOCK'], getline(1, '$'))
+ bw!
+
+ " set the block number in a pointer entry to a negative number
+ let b = copy(save_b)
+ let b[4104:4111] = little_endian ? 0z00000000.00000080 : 0z80000000.00000000
+ call writefile(b, sn)
+ call assert_fails('recover Xfile1', 'E312:')
+ call assert_equal('Xfile1', @%)
+ call assert_equal(['???LINES MISSING'], getline(1, '$'))
+ bw!
+
+ " clear the data block ID
+ let b = copy(save_b)
+ let b[8192:8193] = 0z0000
+ call writefile(b, sn)
+ call assert_fails('recover Xfile1', 'E312:')
+ call assert_equal('Xfile1', @%)
+ call assert_equal(['???BLOCK MISSING'], getline(1, '$'))
+ bw!
+
+ " set the number of lines in the data block to zero
+ let b = copy(save_b)
+ let b[8208:8215] = 0z00000000.00000000
+ call writefile(b, sn)
+ call assert_fails('recover Xfile1', 'E312:')
+ call assert_equal('Xfile1', @%)
+ call assert_equal(['??? from here until ???END lines may have been inserted/deleted',
+ \ '???END'], getline(1, '$'))
+ bw!
+
+ " use an invalid text start for the lines in a data block
+ let b = copy(save_b)
+ let b[8216:8219] = 0z00000000
+ call writefile(b, sn)
+ call assert_fails('recover Xfile1', 'E312:')
+ call assert_equal('Xfile1', @%)
+ call assert_equal(['???'], getline(1, '$'))
+ bw!
+
+ " use an incorrect text end (db_txt_end) for the data block
+ let b = copy(save_b)
+ let b[8204:8207] = little_endian ? 0z80000000 : 0z00000080
+ call writefile(b, sn)
+ call assert_fails('recover Xfile1', 'E312:')
+ call assert_equal('Xfile1', @%)
+ call assert_equal(['??? from here until ???END lines may be messed up', '',
+ \ '???END'], getline(1, '$'))
+ bw!
+
+ " remove the data block
+ let b = copy(save_b)
+ call writefile(b[:8191], sn)
+ call assert_fails('recover Xfile1', 'E312:')
+ call assert_equal('Xfile1', @%)
+ call assert_equal(['???MANY LINES MISSING'], getline(1, '$'))

bw!
call delete(sn)

--
BLACK KNIGHT: None shall pass.
ARTHUR: I have no quarrel with you, brave Sir knight, but I must cross
this bridge.
BLACK KNIGHT: Then you shall die.
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

Bram Moolenaar

unread,
Jun 12, 2021, 8:02:04 AM6/12/21
to vim...@googlegroups.com

I wrote:

> Patch 8.2.2980
> Problem: Popup window test is a bit flaky.
> Solution: Add a redraw command.
> Files: src/testdir/test_popupwin.vim

Included the wrong diff, should be:

*** ../vim-8.2.2979/src/testdir/test_popupwin.vim 2021-06-10 21:07:45.411050902 +0200
--- src/testdir/test_popupwin.vim 2021-06-12 13:58:03.465965540 +0200
***************
*** 1552,1557 ****
--- 1552,1558 ----
call assert_equal(9, getcurpos()[2])
call feedkeys('0', 'xt')
call assert_equal('0', g:ignored)
+ redraw
call assert_equal(1, getcurpos()[2])

" x closes the popup
*** ../vim-8.2.2979/src/version.c 2021-06-12 13:46:38.055854976 +0200
--- src/version.c 2021-06-12 13:58:16.789928351 +0200
***************
*** 752,753 ****
--- 752,755 ----
{ /* Add new patch number below this line */
+ /**/
+ 2980,
/**/

--
ARTHUR: Now stand aside worthy adversary.
BLACK KNIGHT: (Glancing at his shoulder) 'Tis but a scratch.
ARTHUR: A scratch? Your arm's off.
Reply all
Reply to author
Forward
0 new messages