diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-09-28 05:09:21 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2023-09-29 06:07:27 +0800 |
commit | 92e40f8d185e3da8fc97b7a48041afc3fd568d29 (patch) | |
tree | 62c53edf29886da5ef4fadee8d46f62d5d6b707a /test | |
parent | 7f58b2bb6a1a667689d450d9e9738d68a91f0518 (diff) | |
download | rneovim-92e40f8d185e3da8fc97b7a48041afc3fd568d29.tar.gz rneovim-92e40f8d185e3da8fc97b7a48041afc3fd568d29.tar.bz2 rneovim-92e40f8d185e3da8fc97b7a48041afc3fd568d29.zip |
vim-patch:9.0.1946: filename expansion using ** in bash may fail
Problem: filename expansion using ** in bash may fail
Solution: Try to enable the globstar setting
Starting with bash 4.0 it supports extended globbing using the globstar
shell option. This makes matching recursively below a certain directory
using the ** pattern work as expected nowadays. However, we need to
explicitly enable this using the 'shopt -s globstar' bash command.
So let's check the bash environment variable $BASH_VERSINFO (which is
supported since bash 3.0 and conditionally enable the globstar option,
if the major version is at least 4. For older bashs, this at least
shouldn't cause errors (unless one is using really ancient bash 2.X or
something).
closes: vim/vim#13002
closes: vim/vim#13144
https://github.com/vim/vim/commit/9eb1ce531527a7177d16373b0f8689bbcd3d5f73
Co-authored-by: Christian Brabandt <cb@256bit.org>
Diffstat (limited to 'test')
-rw-r--r-- | test/old/testdir/test_functions.vim | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/test/old/testdir/test_functions.vim b/test/old/testdir/test_functions.vim index 3e1e5a4816..f3636f93dd 100644 --- a/test/old/testdir/test_functions.vim +++ b/test/old/testdir/test_functions.vim @@ -3281,4 +3281,23 @@ func Test_fullcommand() call assert_equal('', fullcommand(10)) endfunc +" Test for glob() with shell special patterns +func Test_glob_extended_bash() + CheckExecutable bash + let _shell = &shell + set shell=bash + + call mkdir('Xtestglob/foo/bar/src', 'p') + call writefile([], 'Xtestglob/foo/bar/src/foo.sh') + call writefile([], 'Xtestglob/foo/bar/src/foo.h') + call writefile([], 'Xtestglob/foo/bar/src/foo.cpp') + + " Sort output of glob() otherwise we end up with different + " ordering depending on whether file system is case-sensitive. + let expected = ['Xtestglob/foo/bar/src/foo.cpp', 'Xtestglob/foo/bar/src/foo.h'] + call assert_equal(expected, sort(glob('Xtestglob/**/foo.{h,cpp}', 0, 1))) + call delete('Xtestglob', 'rf') + let &shell=_shell +endfunc + " vim: shiftwidth=2 sts=2 expandtab |