From d2b639e63a136a017f82950ede1a92ed19ac3fa1 Mon Sep 17 00:00:00 2001 From: Billy Kong Date: Sun, 12 Apr 2020 21:58:36 +0800 Subject: [PATCH 1/5] Handle include directory with trailing slash --- lib/jekyll/entry_filter.rb | 3 ++- test/_glob_include_test/include_me.txt | 0 test/test_entry_filter.rb | 8 ++++++++ 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 test/_glob_include_test/include_me.txt 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/_glob_include_test/include_me.txt b/test/_glob_include_test/include_me.txt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/test_entry_filter.rb b/test/test_entry_filter.rb index b3d820e0693..1018f089b2d 100644 --- a/test/test_entry_filter.rb +++ b/test/test_entry_filter.rb @@ -149,5 +149,13 @@ 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/", "_not_dir/"] + assert @filter.glob_include?(data, "../_glob_include_test") + assert @filter.glob_include?(data, "../_glob_include_test/include_me.txt") + assert !@filter.glob_include?(data, "../_not_dir") + end + end end From bf9170028a778dd87b34b04c746582ae91095980 Mon Sep 17 00:00:00 2001 From: Billy Kong Date: Mon, 13 Apr 2020 11:49:48 +0800 Subject: [PATCH 2/5] Assertion for EntryFilter#glob_include? _not_dir case --- test/_glob_include_test/{ => _is_dir}/include_me.txt | 0 test/_glob_include_test/_not_dir | 0 test/test_entry_filter.rb | 9 ++++----- 3 files changed, 4 insertions(+), 5 deletions(-) rename test/_glob_include_test/{ => _is_dir}/include_me.txt (100%) create mode 100644 test/_glob_include_test/_not_dir diff --git a/test/_glob_include_test/include_me.txt b/test/_glob_include_test/_is_dir/include_me.txt similarity index 100% rename from test/_glob_include_test/include_me.txt rename to test/_glob_include_test/_is_dir/include_me.txt diff --git a/test/_glob_include_test/_not_dir b/test/_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 1018f089b2d..54f7c35d750 100644 --- a/test/test_entry_filter.rb +++ b/test/test_entry_filter.rb @@ -151,11 +151,10 @@ class TestEntryFilter < JekyllUnitTest end should "match directory only if there is trailing slash" do - data = ["../_glob_include_test/", "_not_dir/"] - assert @filter.glob_include?(data, "../_glob_include_test") - assert @filter.glob_include?(data, "../_glob_include_test/include_me.txt") - assert !@filter.glob_include?(data, "../_not_dir") + 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") + assert !@filter.glob_include?(data, "../_glob_include_test/_not_dir") end - end end From f1e66abc2e2c457300066caff7d9e9d9481fc215 Mon Sep 17 00:00:00 2001 From: Billy Kong Date: Sun, 26 Apr 2020 14:30:16 +0800 Subject: [PATCH 3/5] moved _glob_include_test/ to test/source/ --- test/{ => source}/_glob_include_test/_is_dir/include_me.txt | 0 test/{ => source}/_glob_include_test/_not_dir | 0 test/test_entry_filter.rb | 6 +++--- 3 files changed, 3 insertions(+), 3 deletions(-) rename test/{ => source}/_glob_include_test/_is_dir/include_me.txt (100%) rename test/{ => source}/_glob_include_test/_not_dir (100%) diff --git a/test/_glob_include_test/_is_dir/include_me.txt b/test/source/_glob_include_test/_is_dir/include_me.txt similarity index 100% rename from test/_glob_include_test/_is_dir/include_me.txt rename to test/source/_glob_include_test/_is_dir/include_me.txt diff --git a/test/_glob_include_test/_not_dir b/test/source/_glob_include_test/_not_dir similarity index 100% rename from test/_glob_include_test/_not_dir rename to test/source/_glob_include_test/_not_dir diff --git a/test/test_entry_filter.rb b/test/test_entry_filter.rb index 54f7c35d750..d19d2f17663 100644 --- a/test/test_entry_filter.rb +++ b/test/test_entry_filter.rb @@ -151,10 +151,10 @@ class TestEntryFilter < JekyllUnitTest 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") assert !@filter.glob_include?(data, "../_glob_include_test/_not_dir") + data = ["../source/_glob_include_test/_is_dir/", "../source/_glob_include_test/_not_dir/"] + assert @filter.glob_include?(data, "../source/_glob_include_test/_is_dir") + assert @filter.glob_include?(data, "../source/_glob_include_test/_is_dir/include_me.txt") end end end From 4d93c3f05e0b4345f6e9db8eeaaa8c80b8ba3875 Mon Sep 17 00:00:00 2001 From: Billy Kong Date: Sun, 26 Apr 2020 14:31:36 +0800 Subject: [PATCH 4/5] use refute instead of assert !sth --- test/test_entry_filter.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_entry_filter.rb b/test/test_entry_filter.rb index d19d2f17663..43dd67ca2f7 100644 --- a/test/test_entry_filter.rb +++ b/test/test_entry_filter.rb @@ -151,10 +151,10 @@ class TestEntryFilter < JekyllUnitTest end should "match directory only if there is trailing slash" do - assert !@filter.glob_include?(data, "../_glob_include_test/_not_dir") data = ["../source/_glob_include_test/_is_dir/", "../source/_glob_include_test/_not_dir/"] assert @filter.glob_include?(data, "../source/_glob_include_test/_is_dir") assert @filter.glob_include?(data, "../source/_glob_include_test/_is_dir/include_me.txt") + refute @filter.glob_include?(data, "../source/_glob_include_test/_not_dir") end end end From 419b57616c0bceb9dad6a35ececead0ae126be3e Mon Sep 17 00:00:00 2001 From: Billy Kong Date: Sun, 26 Apr 2020 14:35:51 +0800 Subject: [PATCH 5/5] removed redundant path prefix --- test/test_entry_filter.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/test_entry_filter.rb b/test/test_entry_filter.rb index 43dd67ca2f7..8d7b154d2ab 100644 --- a/test/test_entry_filter.rb +++ b/test/test_entry_filter.rb @@ -151,10 +151,10 @@ class TestEntryFilter < JekyllUnitTest end should "match directory only if there is trailing slash" do - data = ["../source/_glob_include_test/_is_dir/", "../source/_glob_include_test/_not_dir/"] - assert @filter.glob_include?(data, "../source/_glob_include_test/_is_dir") - assert @filter.glob_include?(data, "../source/_glob_include_test/_is_dir/include_me.txt") - refute @filter.glob_include?(data, "../source/_glob_include_test/_not_dir") + 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