changeset 24828:e0c43439fea6 v8.2.2952

patch 8.2.2952: recover test fails on big endian systems Commit: https://github.com/vim/vim/commit/99285550a9957e2c8669f183557944c6513c4875 Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Sun Jun 6 17:12:46 2021 +0200 patch 8.2.2952: recover test fails on big endian systems Problem: Recover test fails on big endian systems. Solution: Disable the failing test on big endian systems. (Yegappan Lakshmanan, closes #8335)
author Bram Moolenaar <Bram@vim.org>
date Sun, 06 Jun 2021 17:15:04 +0200
parents 37d5599532ad
children 88e87c1a7fe7
files src/testdir/test_recover.vim src/testdir/test_swap.vim src/version.c
diffstat 3 files changed, 39 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_recover.vim
+++ b/src/testdir/test_recover.vim
@@ -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
--- a/src/testdir/test_swap.vim
+++ b/src/testdir/test_swap.vim
@@ -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'))
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2952,
+/**/
     2951,
 /**/
     2950,