Mercurial > vim
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 |