changeset 14497:a7b2dc5f1306 v8.1.0262

patch 8.1.0262: not enough testing for getftype() commit https://github.com/vim/vim/commit/1598f9937a18c056d7b713dc254325c8f8456c8f Author: Bram Moolenaar <Bram@vim.org> Date: Thu Aug 9 22:08:57 2018 +0200 patch 8.1.0262: not enough testing for getftype() Problem: Not enough testing for getftype(). Solution: Add a test. (Dominique Pelle, closes https://github.com/vim/vim/issues/3300)
author Christian Brabandt <cb@256bit.org>
date Thu, 09 Aug 2018 22:15:04 +0200
parents 75ba0e41740b
children fdfdc1d231d9
files src/evalfunc.c src/testdir/test_stat.vim src/version.c
diffstat 3 files changed, 38 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -5111,7 +5111,7 @@ f_getftype(typval_T *argvars, typval_T *
 # endif
 # ifdef S_ISSOCK
 	else if (S_ISSOCK(st.st_mode))
-	    t = "fifo";
+	    t = "socket";
 # endif
 	else
 	    t = "other";
--- a/src/testdir/test_stat.vim
+++ b/src/testdir/test_stat.vim
@@ -122,6 +122,41 @@ func Test_nonexistent_file()
   call assert_equal('', getfperm(fname))
 endfunc
 
+func Test_getftype()
+  call assert_equal('file', getftype(v:progpath))
+  call assert_equal('dir',  getftype('.'))
+
+  if !has('unix')
+    return
+  endif
+
+  silent !ln -s Xfile Xlink
+  call assert_equal('link', getftype('Xlink'))
+  call delete('Xlink')
+
+  if executable('mkfifo')
+    silent !mkfifo Xfifo
+    call assert_equal('fifo', getftype('Xfifo'))
+    call delete('Xfifo')
+  endif
+
+  for cdevfile in systemlist('find /dev -type c -maxdepth 2 2>/dev/null')
+    call assert_equal('cdev', getftype(cdevfile))
+  endfor
+
+  for bdevfile in systemlist('find /dev -type b -maxdepth 2 2>/dev/null')
+    call assert_equal('bdev', getftype(bdevfile))
+  endfor
+
+  " The /run/ directory typically contains socket files.
+  " If it does not, test won't fail but will not test socket files.
+  for socketfile in systemlist('find /run -type s -maxdepth 2 2>/dev/null')
+    call assert_equal('socket', getftype(socketfile))
+  endfor
+
+  " TODO: file type 'other' is not tested. How can we test it?
+endfunc
+
 func Test_win32_symlink_dir()
   " On Windows, non-admin users cannot create symlinks.
   " So we use an existing symlink for this test.
--- a/src/version.c
+++ b/src/version.c
@@ -795,6 +795,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    262,
+/**/
     261,
 /**/
     260,