view src/testdir/test_stat.vim @ 10106:58e6dd1d8be3 v7.4.2324

commit https://github.com/vim/vim/commit/e0ab94e7123ca7855f45919114d948ef2bc1e8c3 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Sep 4 19:50:54 2016 +0200 patch 7.4.2324 Problem: Crash when editing a new buffer and BufUnload autocommand wipes out the new buffer. (Norio Takagi) Solution: Don't allow wiping out this buffer. (partly by Hirohito Higashi) Move old style test13 into test_autocmd. Avoid ml_get error when editing a file.
author Christian Brabandt <cb@256bit.org>
date Sun, 04 Sep 2016 20:00:07 +0200
parents f094d4085014
children 750779134e67
line wrap: on
line source

" Tests for stat functions and checktime

func Test_existent_file()
  let fname='Xtest.tmp'

  let ts=localtime()
  sleep 1
  let fl=['Hello World!']
  call writefile(fl, fname)
  let tf=getftime(fname)
  sleep 1
  let te=localtime()

  call assert_true(ts <= tf && tf <= te)
  call assert_equal(strlen(fl[0] . "\n"), getfsize(fname))
  call assert_equal('file', getftype(fname))
  call assert_equal('rw-', getfperm(fname)[0:2])
endfunc

func Test_existent_directory()
  let dname='.'

  call assert_equal(0, getfsize(dname))
  call assert_equal('dir', getftype(dname))
  call assert_equal('rwx', getfperm(dname)[0:2])
endfunc

func Test_checktime()
  let fname='Xtest.tmp'

  let fl=['Hello World!']
  call writefile(fl, fname)
  set autoread
  exec 'e' fname
  sleep 2
  let fl=readfile(fname)
  let fl[0] .= ' - checktime'
  call writefile(fl, fname)
  checktime
  call assert_equal(fl[0], getline(1))
endfunc

func Test_nonexistent_file()
  let fname='Xtest.tmp'

  call delete(fname)
  call assert_equal(-1, getftime(fname))
  call assert_equal(-1, getfsize(fname))
  call assert_equal('', getftype(fname))
  call assert_equal('', getfperm(fname))
endfunc

func Test_win32_symlink_dir()
  " On Windows, non-admin users cannot create symlinks.
  " So we use an existing symlink for this test.
  if has('win32')
    " Check if 'C:\Users\All Users' is a symlink to a directory.
    let res=system('dir C:\Users /a')
    if match(res, '\C<SYMLINKD> *All Users') >= 0
      " Get the filetype of the symlink.
      call assert_equal('dir', getftype('C:\Users\All Users'))
    endif
  endif
endfunc