]> granicus.if.org Git - vim/commitdiff
patch 8.2.2952: recover test fails on big endian systems v8.2.2952
authorYegappan Lakshmanan <yegappan@yahoo.com>
Sun, 6 Jun 2021 15:12:46 +0000 (17:12 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 6 Jun 2021 15:12:46 +0000 (17:12 +0200)
Problem:    Recover test fails on big endian systems.
Solution:   Disable the failing test on big endian systems. (Yegappan
            Lakshmanan, closes #8335)

src/testdir/test_recover.vim
src/testdir/test_swap.vim
src/version.c

index 654a0f855abf1c4fc75dae0b805dd71d8e545282..7e96622d1a5619700dd50c1f0ebaa4caa19fea19 100644 (file)
@@ -139,7 +139,7 @@ func Test_recover_multiple_swap_files()
   new Xfile1
   call setline(1, ['a', 'b', 'c'])
   preserve
-  let b = readblob('.Xfile1.swp')
+  let b = readblob(swapname(''))
   call writefile(b, '.Xfile1.swm')
   call writefile(b, '.Xfile1.swn')
   call writefile(b, '.Xfile1.swo')
@@ -168,6 +168,7 @@ endfunc
 " Test for :recover using a corrupted swap file
 func Test_recover_corrupted_swap_file()
   CheckUnix
+
   " recover using a partial swap file
   call writefile(0z1234, '.Xfile1.swp')
   call assert_fails('recover Xfile1', 'E295:')
@@ -183,12 +184,41 @@ func Test_recover_corrupted_swap_file()
   preserve
   let sn = swapname('')
   let b = readblob(sn)
+  let save_b = copy(b)
   bw!
-  " 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)
+  " 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)
+    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:')
+    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:')
+    bw!
+
+    " remove the data block
+    let b = copy(save_b)
+    call writefile(b[:8191], sn)
+    call assert_fails('recover Xfile1', 'E312:')
+  endif
+
   bw!
   call delete(sn)
 endfunc
index 52eb62e729b239338ebcd3c57ceed2711bc87dbc..90afb4d6f038b0e8117cfb4814d4852187da1405 100644 (file)
@@ -487,7 +487,7 @@ endfunc
 func Test_missing_swap_file()
   CheckUnix
   new Xfile1
-  call delete('.Xfile1.swp')
+  call delete(swapname(''))
   call assert_fails('file Xfile2', 'E301:')
   call assert_equal('Xfile2', bufname())
   call assert_true(bufexists('Xfile1'))
index f995518798c3067760bc72474a8b39648ada3efe..59cd0ce949ea4dd3257c1215c8bf2afe7cdf1bec 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2952,
 /**/
     2951,
 /**/