Mercurial > vim
view src/testdir/test_stat.vim @ 31192:dcde141f2d1e v9.0.0930
patch 9.0.0930: cannot debug the Kitty keyboard protocol with TermDebug
Commit: https://github.com/vim/vim/commit/63a2e360cca2c70ab0a85d14771d3259d4b3aafa
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Nov 23 20:20:18 2022 +0000
patch 9.0.0930: cannot debug the Kitty keyboard protocol with TermDebug
Problem: Cannot debug the Kitty keyboard protocol with TermDebug.
Solution: Add Kitty keyboard protocol support to the libvterm fork.
Recognize the escape sequences that the protocol generates. Add
the 'keyprotocol' option to allow the user to specify for which
terminal what protocol is to be used, instead of hard-coding this.
Add recognizing the kitty keyboard protocol status.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 23 Nov 2022 21:30:04 +0100 |
parents | ae10b91ac6b3 |
children |
line wrap: on
line source
" Tests for stat functions and checktime source check.vim func CheckFileTime(doSleep) let fnames = ['Xtest1.tmp', 'Xtest2.tmp', 'Xtest3.tmp'] let times = [] let result = 0 " Use three files instead of localtim(), with a network filesystem the file " times may differ at bit let fl = ['Hello World!'] for fname in fnames call writefile(fl, fname) call add(times, fname->getftime()) if a:doSleep sleep 1 endif endfor let time_correct = (times[0] <= times[1] && times[1] <= times[2]) if a:doSleep || time_correct call assert_true(time_correct, printf('Expected %s <= %s <= %s', times[0], times[1], times[2])) call assert_equal(strlen(fl[0] . "\n"), fnames[0]->getfsize()) call assert_equal('file', fnames[0]->getftype()) call assert_equal('rw-', getfperm(fnames[0])[0:2]) let result = 1 endif for fname in fnames call delete(fname) endfor return result endfunc func Test_existent_file() " On some systems the file timestamp is rounded to a multiple of 2 seconds. " We need to sleep to handle that, but that makes the test slow. First try " without the sleep, and if it fails try again with the sleep. if CheckFileTime(0) == 0 call CheckFileTime(1) endif 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 SleepForTimestamp() " FAT has a granularity of 2 seconds, otherwise it's usually 1 second if has('win32') sleep 2 else sleep 1 endif endfunc func Test_checktime() let fname = 'Xtest.tmp' let fl = ['Hello World!'] call writefile(fl, fname, 'D') set autoread exec 'e' fname call SleepForTimestamp() let fl = readfile(fname) let fl[0] .= ' - checktime' call writefile(fl, fname) checktime call assert_equal(fl[0], getline(1)) endfunc func Test_checktime_fast() CheckFeature nanotime let fname = 'Xtest.tmp' let fl = ['Hello World!'] call writefile(fl, fname, 'D') set autoread exec 'e' fname let fl = readfile(fname) let fl[0] .= ' - checktime' call writefile(fl, fname) checktime call assert_equal(fl[0], getline(1)) endfunc func Test_autoread_fast() CheckFeature nanotime " this is timing sensitive let g:test_is_flaky = 1 new Xautoread setlocal autoread call setline(1, 'foo') w! sleep 10m call writefile(['bar'], 'Xautoread', 'D') sleep 10m checktime call assert_equal('bar', trim(getline(1))) endfunc func Test_autoread_file_deleted() new Xautoread set autoread call setline(1, 'original') w! call SleepForTimestamp() if has('win32') silent !echo changed > Xautoread else silent !echo 'changed' > Xautoread endif checktime call assert_equal('changed', trim(getline(1))) call SleepForTimestamp() messages clear if has('win32') silent !del Xautoread else silent !rm Xautoread endif checktime call assert_match('E211:', execute('messages')) call assert_equal('changed', trim(getline(1))) call SleepForTimestamp() if has('win32') silent !echo recreated > Xautoread else silent !echo 'recreated' > Xautoread endif checktime call assert_equal('recreated', trim(getline(1))) call delete('Xautoread') bwipe! 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_getftype() call assert_equal('file', getftype(v:progpath)) call assert_equal('dir', getftype('.')) if !has('unix') return endif silent !ln -s Xlinkfile 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') " On Mac /def/fd/2 is found but the type is "fifo" if cdevfile !~ '/dev/fd/' let type = getftype(cdevfile) " ignore empty result, can happen if the file disappeared if type != '' call assert_equal('cdev', type, 'for ' .. cdevfile) endif endif endfor for bdevfile in systemlist('find /dev -type b -maxdepth 2 2>/dev/null') let type = getftype(bdevfile) " ignore empty result, can happen if the file disappeared if type != '' call assert_equal('bdev', type, 'for ' .. bdevfile) endif 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') let type = getftype(socketfile) " ignore empty result, can happen if the file disappeared if type != '' call assert_equal('socket', type, 'for ' .. socketfile) endif 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. CheckMSWindows " 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')) else throw 'Skipped: cannot find an existing symlink' endif endfunc " vim: shiftwidth=2 sts=2 expandtab