changeset 15050:c7628d6bc0dc v8.1.0536

patch 8.1.0536: file time test fails when using NFS commit https://github.com/vim/vim/commit/addc156c38d442367854f71baee31f2eb003c699 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Nov 18 12:25:09 2018 +0100 patch 8.1.0536: file time test fails when using NFS Problem: File time test fails when using NFS. Solution: Use three file times instead of localtim(). (James McCoy, closes #3618)
author Bram Moolenaar <Bram@vim.org>
date Sun, 18 Nov 2018 12:30:06 +0100
parents 8fd94c25a939
children f6b3fe138e84
files src/testdir/test_stat.vim src/version.c
diffstat 2 files changed, 21 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_stat.vim
+++ b/src/testdir/test_stat.vim
@@ -1,31 +1,33 @@
 " Tests for stat functions and checktime
 
 func CheckFileTime(doSleep)
-  let fname = 'Xtest.tmp'
+  let fnames = ['Xtest1.tmp', 'Xtest2.tmp', 'Xtest3.tmp']
+  let times = []
   let result = 0
 
-  let ts = localtime()
-  if a:doSleep
-    sleep 1
-  endif
+  " Use three files istead of localtim(), with a network filesystem the file
+  " times may differ at bit
   let fl = ['Hello World!']
-  call writefile(fl, fname)
-  let tf = getftime(fname)
-  if a:doSleep
-    sleep 1
-  endif
-  let te = localtime()
+  for fname in fnames
+    call writefile(fl, fname)
+    call add(times, getftime(fname))
+    if a:doSleep
+      sleep 1
+    endif
+  endfor
 
-  let time_correct = (ts <= tf && tf <= te)
+  let time_correct = (times[0] <= times[1] && times[1] <= times[2])
   if a:doSleep || time_correct
-    call assert_true(time_correct)
-    call assert_equal(strlen(fl[0] . "\n"), getfsize(fname))
-    call assert_equal('file', getftype(fname))
-    call assert_equal('rw-', getfperm(fname)[0:2])
+    call assert_true(time_correct, printf('Expected %s <= %s <= %s', times[0], times[1], times[2]))
+    call assert_equal(strlen(fl[0] . "\n"), getfsize(fnames[0]))
+    call assert_equal('file', getftype(fnames[0]))
+    call assert_equal('rw-', getfperm(fnames[0])[0:2])
     let result = 1
   endif
 
-  call delete(fname)
+  for fname in fnames
+    call delete(fname)
+  endfor
   return result
 endfunc
 
--- a/src/version.c
+++ b/src/version.c
@@ -793,6 +793,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    536,
+/**/
     535,
 /**/
     534,