comparison src/testdir/test_functions.vim @ 33374:62a34e280593 v9.0.1946

patch 9.0.1946: filename expansion using ** in bash may fail Commit: https://github.com/vim/vim/commit/9eb1ce531527a7177d16373b0f8689bbcd3d5f73 Author: Christian Brabandt <cb@256bit.org> Date: Wed Sep 27 19:08:25 2023 +0200 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: #13002 closes: #13144 Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Wed, 27 Sep 2023 19:15:06 +0200
parents 6fbeeebdc7f3
children e3613ffa370d
comparison
equal deleted inserted replaced
33373:25583f388016 33374:62a34e280593
3623 func Test_fullcommand() 3623 func Test_fullcommand()
3624 " this used to crash vim 3624 " this used to crash vim
3625 call assert_equal('', fullcommand(10)) 3625 call assert_equal('', fullcommand(10))
3626 endfunc 3626 endfunc
3627 3627
3628 " Test for glob() with shell special patterns
3629 func Test_glob_extended_bash()
3630 CheckExecutable bash
3631 let _shell = &shell
3632 set shell=bash
3633
3634 call mkdir('Xtestglob/foo/bar/src', 'p')
3635 call writefile([], 'Xtestglob/foo/bar/src/foo.sh')
3636 call writefile([], 'Xtestglob/foo/bar/src/foo.h')
3637 call writefile([], 'Xtestglob/foo/bar/src/foo.cpp')
3638
3639 " Sort output of glob() otherwise we end up with different
3640 " ordering depending on whether file system is case-sensitive.
3641 let expected = ['Xtestglob/foo/bar/src/foo.cpp', 'Xtestglob/foo/bar/src/foo.h']
3642 call assert_equal(expected, sort(glob('Xtestglob/**/foo.{h,cpp}', 0, 1)))
3643 call delete('Xtestglob', 'rf')
3644 let &shell=_shell
3645 endfunc
3646
3628 " vim: shiftwidth=2 sts=2 expandtab 3647 " vim: shiftwidth=2 sts=2 expandtab