aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-09-28 05:09:21 +0800
committerzeertzjq <zeertzjq@outlook.com>2023-09-29 06:07:27 +0800
commit92e40f8d185e3da8fc97b7a48041afc3fd568d29 (patch)
tree62c53edf29886da5ef4fadee8d46f62d5d6b707a /test
parent7f58b2bb6a1a667689d450d9e9738d68a91f0518 (diff)
downloadrneovim-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.vim19
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