From 5a350788e739adfef1acb8911828cf651367bcb3 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 5 Nov 2014 21:04:34 -0800 Subject: [PATCH] Test JEKYLL_NO_BUNDLER_REQUIRE. --- lib/jekyll/plugin_manager.rb | 9 +++++++-- test/helper.rb | 7 +++++++ test/test_plugin_manager.rb | 12 ++++++++++-- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/lib/jekyll/plugin_manager.rb b/lib/jekyll/plugin_manager.rb index cf5860c5..ea964ce5 100644 --- a/lib/jekyll/plugin_manager.rb +++ b/lib/jekyll/plugin_manager.rb @@ -26,16 +26,21 @@ module Jekyll def require_gems site.gems.each do |gem| if plugin_allowed?(gem) + Jekyll.logger.debug("PluginManager:", "Requiring #{gem}") require gem end end end def self.require_from_bundler - unless ENV["JEKYLL_NO_BUNDLER_REQUIRE"] + if ENV["JEKYLL_NO_BUNDLER_REQUIRE"] + false + else require "bundler" - Bundler.require(:jekyll_plugins) + required_gems = Bundler.require(:jekyll_plugins) + Jekyll.logger.debug("PluginManager:", "Required #{required_gems.map(&:name).join(', ')}") ENV["JEKYLL_NO_BUNDLER_REQUIRE"] = "true" + true end rescue LoadError false diff --git a/test/helper.rb b/test/helper.rb index 3103e117..ea3777ed 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -58,6 +58,13 @@ class Test::Unit::TestCase File.open("#{path}/index.html", "w"){ |f| f.write("I was previously generated.") } end + def with_env(key, value) + old_value = ENV[key] + ENV[key] = value + yield + ENV[key] = old_value + end + def capture_stdout $old_stdout = $stdout $stdout = StringIO.new diff --git a/test/test_plugin_manager.rb b/test/test_plugin_manager.rb index 8cc1d8f8..1f7931ca 100644 --- a/test/test_plugin_manager.rb +++ b/test/test_plugin_manager.rb @@ -2,7 +2,15 @@ require 'helper' class TestPluginManager < Test::Unit::TestCase def test_requiring_from_bundler - Jekyll::PluginManager.require_from_bundler - assert ENV["JEKYLL_NO_BUNDLER_REQUIRE"], 'Gemfile plugins were not required.' + with_env("JEKYLL_NO_BUNDLER_REQUIRE", nil) do + Jekyll::PluginManager.require_from_bundler + assert ENV["JEKYLL_NO_BUNDLER_REQUIRE"], 'Gemfile plugins were not required.' + end + end + + def test_blocking_requiring_from_bundler + with_env("JEKYLL_NO_BUNDLER_REQUIRE", "true") do + assert_equal false, Jekyll::PluginManager.require_from_bundler, "Gemfile plugins were required but shouldn't have been" + end end end