From d5f29a821c2dd3c8e23fe4c1ae28bdc7076f6e6c Mon Sep 17 00:00:00 2001
From: Johan Holmberg <holmberg556@gmail.com>
Date: Wed, 29 Jul 2015 13:32:04 +0200
Subject: [PATCH] ignore_file accepts shell glob (*, **)

+ test of this new behaviour
---
 lib/cmdtest/fssnapshot.rb |  8 +++++++-
 t/CMDTEST_ignore_file.rb  | 22 ++++++++++++++++++++++
 2 files changed, 29 insertions(+), 1 deletion(-)

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