diff --git a/lib/jekyll/entry_filter.rb b/lib/jekyll/entry_filter.rb index 4f527eddf57..a7ece1932c5 100644 --- a/lib/jekyll/entry_filter.rb +++ b/lib/jekyll/entry_filter.rb @@ -98,7 +98,8 @@ def glob_include?(enumerator, entry) pattern_with_source = PathManager.join(site.source, pattern) File.fnmatch?(pattern_with_source, entry_with_source) || - entry_with_source.start_with?(pattern_with_source) + entry_with_source.start_with?(pattern_with_source) || + (pattern_with_source == "#{entry_with_source}/" if File.directory?(entry_with_source)) when Regexp pattern.match?(entry_with_source) else diff --git a/test/source/_glob_include_test/_is_dir/include_me.txt b/test/source/_glob_include_test/_is_dir/include_me.txt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/source/_glob_include_test/_not_dir b/test/source/_glob_include_test/_not_dir new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/test_entry_filter.rb b/test/test_entry_filter.rb index b3d820e0693..8d7b154d2ab 100644 --- a/test/test_entry_filter.rb +++ b/test/test_entry_filter.rb @@ -149,5 +149,12 @@ class TestEntryFilter < JekyllUnitTest assert @filter.glob_include?(data, "vendor/bundle/jekyll/lib/page.rb") assert @filter.glob_include?(data, "/vendor/ruby/lib/set.rb") end + + should "match directory only if there is trailing slash" do + data = ["_glob_include_test/_is_dir/", "_glob_include_test/_not_dir/"] + assert @filter.glob_include?(data, "_glob_include_test/_is_dir") + assert @filter.glob_include?(data, "_glob_include_test/_is_dir/include_me.txt") + refute @filter.glob_include?(data, "_glob_include_test/_not_dir") + end end end