diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index 2fad097b..d6c5a0b8 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -360,9 +360,13 @@ module Jekyll end def each_site_file + seen_files = [] %w(pages static_files_to_write docs_to_write).each do |type| send(type).each do |item| + next if seen_files.include?(item) + yield item + seen_files << item end end end diff --git a/test/test_site.rb b/test/test_site.rb index 246f813e..7556174d 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -749,5 +749,14 @@ class TestSite < JekyllUnitTest assert_includes site.static_files.map(&:relative_path), "_methods/extensionless_static_file" end + + should "not be revisited in `Site#each_site_file`" do + site = fixture_site("collections" => { "methods" => { "output" => true } }) + site.read + + visited_files = [] + site.each_site_file { |file| visited_files << file } + assert_equal visited_files.count, visited_files.uniq.count + end end end