Mercurial > vim
diff src/testdir/test_functions.vim @ 16231:0761a4c111a7 v8.1.1120
patch 8.1.1120: cannot easily get directory entry matches
commit https://github.com/vim/vim/commit/543c9b1921d7605498b54afdef518e312f1b4515
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Apr 5 22:50:40 2019 +0200
patch 8.1.1120: cannot easily get directory entry matches
Problem: Cannot easily get directory entry matches.
Solution: Add the readdir() function. (Yasuhiro Matsumoto, closes https://github.com/vim/vim/issues/2439)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 05 Apr 2019 23:00:06 +0200 |
parents | 1eaaa82ececf |
children | 81be817c9d9a |
line wrap: on
line diff
--- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -1401,3 +1401,33 @@ func Test_platform_name() call assert_equal(uname =~? 'CYGWIN\|MSYS', has('win32unix')) endif endfunc + +func Test_readdir() + call mkdir('Xdir') + call writefile([], 'Xdir/foo.txt') + call writefile([], 'Xdir/bar.txt') + call mkdir('Xdir/dir') + + " All results + let files = readdir('Xdir') + call assert_equal(['bar.txt', 'dir', 'foo.txt'], sort(files)) + + " Only results containing "f" + let files = readdir('Xdir', { x -> stridx(x, 'f') !=- 1 }) + call assert_equal(['foo.txt'], sort(files)) + + " Only .txt files + let files = readdir('Xdir', { x -> x =~ '.txt$' }) + call assert_equal(['bar.txt', 'foo.txt'], sort(files)) + + " Only .txt files with string + let files = readdir('Xdir', 'v:val =~ ".txt$"') + call assert_equal(['bar.txt', 'foo.txt'], sort(files)) + + " Limit to 1 result. + let l = [] + let files = readdir('Xdir', {x -> len(add(l, x)) == 2 ? -1 : 1}) + call assert_equal(1, len(files)) + + call delete('Xdir', 'rf') +endfunc