diff --git a/lib/cmdtest/fssnapshot.rb b/lib/cmdtest/fssnapshot.rb index 8edd18e..3144cb6 100644 --- a/lib/cmdtest/fssnapshot.rb +++ b/lib/cmdtest/fssnapshot.rb @@ -56,7 +56,13 @@ module Cmdtest end def _ignore_file?(path) - @ignored_files.any? {|ignored| ignored === path } + @ignored_files.any? do |ignored| + if ignored.index("*") + File.fnmatch(ignored, path, File::FNM_PATHNAME) + else + ignored === path + end + end end def files diff --git a/t/CMDTEST_ignore_file.rb b/t/CMDTEST_ignore_file.rb index a038dad..3caff7e 100644 --- a/t/CMDTEST_ignore_file.rb +++ b/t/CMDTEST_ignore_file.rb @@ -109,4 +109,26 @@ class CMDTEST_ignore_file < Cmdtest::Testcase end end + #---------------------------------------- + # the argument to 'ignore_file' can contain shell wildcards, + # both * and ** + + def test_ignore_file_SHELL_GLOB + create_CMDTEST_foo [ + "ignore_file 'bbb*'", + "ignore_file '**/ccc'", + "dir_mkdir 'dir'", + "", + "cmd 'touch.rb aaa bbb1 bbb2 ccc dir/aaa dir/bbb1 dir/bbb2 dir/ccc' do", + " created_files 'aaa', 'dir/aaa', 'dir/bbb1', 'dir/bbb2'", + "end", + ] + + cmd_cmdtest do + stdout_equal [ + "### touch.rb aaa bbb1 bbb2 ccc dir/aaa dir/bbb1 dir/bbb2 dir/ccc", + ] + end + end + end