diff --git a/lib/jekyll/configuration.rb b/lib/jekyll/configuration.rb index 2931cba4500..a9965d29f5b 100644 --- a/lib/jekyll/configuration.rb +++ b/lib/jekyll/configuration.rb @@ -156,7 +156,7 @@ def config_files(override) ) # Get configuration from /_config.yml or / - config_files = override.delete("config") + config_files = override["config"] if config_files.to_s.empty? default = %w(yml yaml).find(-> { "yml" }) do |ext| File.exist?(Jekyll.sanitized_path(source(override), "_config.#{ext}")) diff --git a/lib/jekyll/drops/site_drop.rb b/lib/jekyll/drops/site_drop.rb index cb4a007eb15..20b0332a43c 100644 --- a/lib/jekyll/drops/site_drop.rb +++ b/lib/jekyll/drops/site_drop.rb @@ -38,6 +38,9 @@ def collections @site_collections ||= @obj.collections.values.sort_by(&:label).map(&:to_liquid) end + # return nil for `{{ site.config }}` even if --config was passed via CLI + def config; end + private def_delegator :@obj, :config, :fallback_data end diff --git a/test/test_configuration.rb b/test/test_configuration.rb index dddb61b8671..3dbd5ca1c4e 100644 --- a/test/test_configuration.rb +++ b/test/test_configuration.rb @@ -356,7 +356,10 @@ class TestConfiguration < JekyllUnitTest .and_return({ "baseurl" => "http://example.com" }) allow($stdout).to receive(:puts).with("Configuration file: #{@paths[:other]}") assert_equal \ - site_configuration({ "baseurl" => "http://example.com" }), + site_configuration({ + "baseurl" => "http://example.com", + "config" => @paths[:other], + }), Jekyll.configuration(test_config.merge({ "config" => @paths[:other] })) end @@ -368,7 +371,10 @@ class TestConfiguration < JekyllUnitTest .and_return({ "baseurl" => "http://example.com" }) allow($stdout).to receive(:puts).with("Configuration file: #{@paths[:other]}") assert_equal \ - site_configuration({ "baseurl" => "http://example.com" }), + site_configuration({ + "baseurl" => "http://example.com", + "config" => @paths[:other], + }), Jekyll.configuration(test_config.merge({ :config => @paths[:other] })) end @@ -376,15 +382,18 @@ class TestConfiguration < JekyllUnitTest allow(SafeYAML).to receive(:load_file).with(@paths[:default]).and_return({}) allow($stdout).to receive(:puts).with("Configuration file: #{@paths[:default]}") assert_equal \ - site_configuration, + site_configuration({ "config" => [@paths[:empty]] }), Jekyll.configuration(test_config.merge({ "config" => [@paths[:empty]] })) end should "successfully load a TOML file" do Jekyll.logger.log_level = :warn assert_equal \ - site_configuration({ "baseurl" => "/you-beautiful-blog-you", - "title" => "My magnificent site, wut", }), + site_configuration({ + "baseurl" => "/you-beautiful-blog-you", + "title" => "My magnificent site, wut", + "config" => [@paths[:toml]], + }), Jekyll.configuration(test_config.merge({ "config" => [@paths[:toml]] })) Jekyll.logger.log_level = :info end @@ -399,7 +408,9 @@ class TestConfiguration < JekyllUnitTest allow($stdout).to receive(:puts).with("Configuration file: #{@paths[:other]}") allow($stdout).to receive(:puts).with("Configuration file: #{@paths[:toml]}") assert_equal( - site_configuration, + site_configuration({ + "config" => [@paths[:default], @paths[:other], @paths[:toml]], + }), Jekyll.configuration( test_config.merge( { "config" => [@paths[:default], @paths[:other], @paths[:toml]] } @@ -424,7 +435,10 @@ class TestConfiguration < JekyllUnitTest .to receive(:puts) .with("Configuration file: #{@paths[:other]}") assert_equal \ - site_configuration({ "baseurl" => "http://example.com" }), + site_configuration({ + "baseurl" => "http://example.com", + "config" => [@paths[:default], @paths[:other]], + }), Jekyll.configuration( test_config.merge({ "config" => [@paths[:default], @paths[:other]] }) )