diff --git a/lib/jekyll/regenerator.rb b/lib/jekyll/regenerator.rb index 37107350..9c9300ce 100644 --- a/lib/jekyll/regenerator.rb +++ b/lib/jekyll/regenerator.rb @@ -119,7 +119,10 @@ module Jekyll def add_dependency(path, dependency) return if (metadata[path].nil? || @disabled) - metadata[path]["deps"] << dependency unless metadata[path]["deps"].include? dependency + if !metadata[path]["deps"].include? dependency + metadata[path]["deps"] << dependency + add(dependency) unless metadata.include?(dependency) + end regenerate? dependency end diff --git a/test/test_regenerator.rb b/test/test_regenerator.rb index 7dd39743..f1d4b8cb 100644 --- a/test/test_regenerator.rb +++ b/test/test_regenerator.rb @@ -224,6 +224,20 @@ class TestRegenerator < JekyllUnitTest assert @regenerator.modified?(@path) end + should "not regenerate again if multiple dependencies" do + multi_deps = @regenerator.metadata.select {|k,v| v['deps'].length > 2} + multi_dep_path = multi_deps.keys.first + + assert @regenerator.metadata[multi_dep_path]["deps"].length > 2 + + assert @regenerator.modified?(multi_dep_path) + + @site.process + @regenerator.clear_cache + + refute @regenerator.modified?(multi_dep_path) + end + should "regenerate everything if metadata is disabled" do @site.config["full_rebuild"] = true @regenerator.clear