From dcf546275ba5a1497fb6988b934f8c5da6900080 Mon Sep 17 00:00:00 2001 From: Beau Simensen Date: Sun, 22 Jan 2012 22:10:12 -0800 Subject: [PATCH] Tweaked plugin directory handling, tests. --- lib/jekyll/site.rb | 9 ++++++--- test/test_site.rb | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index 22a48a48..0788223f 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -14,16 +14,19 @@ module Jekyll # config - A Hash containing site configuration details. def initialize(config) self.config = config.clone - self.safe = config['safe'] self.source = File.expand_path(config['source']) self.dest = File.expand_path(config['destination']) self.plugins = if config['plugins'].respond_to?('each') # If plugins is an array, process it. - config['plugins'].each { |directory| File.expand_path(directory) } + Array(config['plugins']).map { |d| File.expand_path(d) } else # Otherwise process a single entry as an array. - [File.expand_path(config['plugins'])] + if config['plugins'].nil? + [] + else + [File.expand_path(config['plugins'])] + end end self.lsi = config['lsi'] self.pygments = config['pygments'] diff --git a/test/test_site.rb b/test/test_site.rb index c9b991b7..1c9b1534 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -1,6 +1,27 @@ require 'helper' class TestSite < Test::Unit::TestCase + context "configuring sites" do + should "have an array for plugins by default" do + site = Site.new(Jekyll::DEFAULTS) + assert_equal [File.join(Dir.pwd, '_plugins')], site.plugins + end + + should "have an array for plugins if passed as a string" do + site = Site.new(Jekyll::DEFAULTS.merge({'plugins' => '/tmp/plugins'})) + assert_equal ['/tmp/plugins'], site.plugins + end + + should "have an array for plugins if passed as an array" do + site = Site.new(Jekyll::DEFAULTS.merge({'plugins' => ['/tmp/plugins', '/tmp/otherplugins']})) + assert_equal ['/tmp/plugins', '/tmp/otherplugins'], site.plugins + end + + should "have an array for plugins if nothing is passed" do + site = Site.new(Jekyll::DEFAULTS.merge({'plugins' => []})) + assert_equal [], site.plugins + end + end context "creating sites" do setup do stub(Jekyll).configuration do