diff --git a/lib/jekyll/commands/build.rb b/lib/jekyll/commands/build.rb index b1636c88..1c942a0b 100644 --- a/lib/jekyll/commands/build.rb +++ b/lib/jekyll/commands/build.rb @@ -25,7 +25,7 @@ module Jekyll options = configuration_from_options(options) site = Jekyll::Site.new(options) - Jekyll.logger.log_level = Jekyll::Stevenson::ERROR if options['quiet'] + Jekyll.logger.log_level = :error if options['quiet'] build(site, options) watch(site, options) if options['watch'] @@ -70,8 +70,8 @@ module Jekyll Jekyll.logger.info "Auto-regeneration:", "enabled" listener = Listen.to( - source, - :ignore => ignored, + source, + :ignore => ignored, :force_polling => options['force_polling'] ) do |modified, added, removed| t = Time.now.strftime("%Y-%m-%d %H:%M:%S") diff --git a/lib/jekyll/commands/doctor.rb b/lib/jekyll/commands/doctor.rb index 3e4ad75c..0fab8b3a 100644 --- a/lib/jekyll/commands/doctor.rb +++ b/lib/jekyll/commands/doctor.rb @@ -41,7 +41,7 @@ module Jekyll if page.uses_relative_permalinks Jekyll.logger.warn "Deprecation:", "'#{page.path}' uses relative" + " permalinks which will be deprecated in" + - " Jekyll v1.2 and beyond." + " Jekyll v2.0.0 and beyond." contains_deprecated_pages = true end end diff --git a/lib/jekyll/commands/new.rb b/lib/jekyll/commands/new.rb index d348315a..ca5ed164 100644 --- a/lib/jekyll/commands/new.rb +++ b/lib/jekyll/commands/new.rb @@ -36,7 +36,7 @@ module Jekyll end end - puts "New jekyll site installed in #{new_blog_path}." + Jekyll.logger.info "New jekyll site installed in #{new_blog_path}." end def self.create_blank_site(path) diff --git a/lib/jekyll/configuration.rb b/lib/jekyll/configuration.rb index ca055329..7089c779 100644 --- a/lib/jekyll/configuration.rb +++ b/lib/jekyll/configuration.rb @@ -27,8 +27,7 @@ module Jekyll 'future' => true, # remove and make true just default 'unpublished' => false, - 'relative_permalinks' => true, # backwards-compatibility with < 1.0 - # will be set to false once 2.0 hits + 'relative_permalinks' => false, 'markdown' => 'kramdown', 'highlighter' => 'pygments', diff --git a/lib/jekyll/convertible.rb b/lib/jekyll/convertible.rb index cce7460b..9d00d703 100644 --- a/lib/jekyll/convertible.rb +++ b/lib/jekyll/convertible.rb @@ -50,9 +50,9 @@ module Jekyll self.data = SafeYAML.load($1) end rescue SyntaxError => e - puts "YAML Exception reading #{File.join(base, name)}: #{e.message}" + Jekyll.logger.warn "YAML Exception reading #{File.join(base, name)}: #{e.message}" rescue Exception => e - puts "Error reading file #{File.join(base, name)}: #{e.message}" + Jekyll.logger.warn "Error reading file #{File.join(base, name)}: #{e.message}" end self.data ||= {} diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index 5ebf3c20..a86ca5e2 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -396,13 +396,11 @@ module Jekyll def relative_permalinks_deprecation_method if config['relative_permalinks'] && has_relative_page? - $stderr.puts # Places newline after "Generating..." Jekyll.logger.warn "Deprecation:", "Starting in 2.0, permalinks for pages" + " in subfolders must be relative to the" + " site source directory, not the parent" + " directory. Check http://jekyllrb.com/docs/upgrading/"+ " for more info." - $stderr.print Jekyll.logger.formatted_topic("") + "..." # for "done." end end diff --git a/lib/jekyll/stevenson.rb b/lib/jekyll/stevenson.rb index 57fba827..b50368c1 100644 --- a/lib/jekyll/stevenson.rb +++ b/lib/jekyll/stevenson.rb @@ -2,17 +2,19 @@ module Jekyll class Stevenson attr_accessor :log_level - DEBUG = 0 - INFO = 1 - WARN = 2 - ERROR = 3 + LOG_LEVELS = { + debug: 0, + info: 1, + warn: 2, + error: 3 + } # Public: Create a new instance of Stevenson, Jekyll's logger # - # level - (optional, integer) the log level + # level - (optional, symbol) the log level # # Returns nothing - def initialize(level = INFO) + def initialize(level = :info) @log_level = level end @@ -23,7 +25,7 @@ module Jekyll # # Returns nothing def debug(topic, message = nil) - $stdout.puts(message(topic, message)) if log_level <= DEBUG + $stdout.puts(message(topic, message)) if should_log(:debug) end # Public: Print a jekyll message to stdout @@ -33,7 +35,7 @@ module Jekyll # # Returns nothing def info(topic, message = nil) - $stdout.puts(message(topic, message)) if log_level <= INFO + $stdout.puts(message(topic, message)) if should_log(:info) end # Public: Print a jekyll message to stderr @@ -43,7 +45,7 @@ module Jekyll # # Returns nothing def warn(topic, message = nil) - $stderr.puts(message(topic, message).yellow) if log_level <= WARN + $stderr.puts(message(topic, message).yellow) if should_log(:warn) end # Public: Print a jekyll error message to stderr @@ -53,7 +55,7 @@ module Jekyll # # Returns nothing def error(topic, message = nil) - $stderr.puts(message(topic, message).red) if log_level <= ERROR + $stderr.puts(message(topic, message).red) if should_log(:error) end # Public: Print a Jekyll error message to stderr and immediately abort the process @@ -85,5 +87,16 @@ module Jekyll def formatted_topic(topic) "#{topic} ".rjust(20) end + + # Public: Determine whether the current log level warrants logging at the + # proposed level. + # + # level_of_message - the log level of the message (symbol) + # + # Returns true if the log level of the message is greater than or equal to + # this logger's log level. + def should_log(level_of_message) + LOG_LEVELS.fetch(log_level) <= LOG_LEVELS.fetch(level_of_message) + end end end diff --git a/test/helper.rb b/test/helper.rb index b9b7e4cd..2e67da0e 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -70,4 +70,14 @@ class Test::Unit::TestCase ensure $stdout = $old_stdout end + + def capture_stderr + $old_stderr = $stderr + $stderr = StringIO.new + yield + $stderr.rewind + return $stderr.string + ensure + $stderr = $old_stderr + end end diff --git a/test/source/+/foo.md b/test/source/+/foo.md index cb4f8ce0..30f9535f 100644 --- a/test/source/+/foo.md +++ b/test/source/+/foo.md @@ -1,7 +1,7 @@ --- layout: default title : Page inside + -permalink: plus+in+url +permalink: /+/plus+in+url --- Line 1 {{ page.title }} diff --git a/test/test_configuration.rb b/test/test_configuration.rb index 3a8918f9..bfb37adf 100644 --- a/test/test_configuration.rb +++ b/test/test_configuration.rb @@ -166,9 +166,9 @@ class TestConfiguration < Test::Unit::TestCase end should "successfully load a TOML file" do - Jekyll.logger.log_level = Jekyll::Stevenson::WARN + Jekyll.logger.log_level = :warn assert_equal Jekyll::Configuration::DEFAULTS.merge({ "baseurl" => "/you-beautiful-blog-you", "title" => "My magnificent site, wut" }), Jekyll.configuration({ "config" => [@paths[:toml]] }) - Jekyll.logger.log_level = Jekyll::Stevenson::INFO + Jekyll.logger.log_level = :info end should "load multiple config files" do diff --git a/test/test_convertible.rb b/test/test_convertible.rb index c7ad9b9a..28f99952 100644 --- a/test/test_convertible.rb +++ b/test/test_convertible.rb @@ -21,7 +21,7 @@ class TestConvertible < Test::Unit::TestCase should "not parse if there is syntax error in front-matter" do name = 'broken_front_matter2.erb' - out = capture_stdout do + out = capture_stderr do ret = @convertible.read_yaml(@base, name) assert_equal({}, ret) end @@ -30,7 +30,7 @@ class TestConvertible < Test::Unit::TestCase end should "not allow ruby objects in yaml" do - out = capture_stdout do + out = capture_stderr do @convertible.read_yaml(@base, 'exploit_front_matter.erb') end assert_no_match /undefined class\/module DoesNotExist/, out @@ -38,7 +38,7 @@ class TestConvertible < Test::Unit::TestCase should "not parse if there is encoding error in file" do name = 'broken_front_matter3.erb' - out = capture_stdout do + out = capture_stderr do ret = @convertible.read_yaml(@base, name, :encoding => 'utf-8') assert_equal({}, ret) end diff --git a/test/test_new_command.rb b/test/test_new_command.rb index 135cfa6e..bc58bd2e 100644 --- a/test/test_new_command.rb +++ b/test/test_new_command.rb @@ -31,7 +31,7 @@ class TestNewCommand < Test::Unit::TestCase should 'display a success message' do output = capture_stdout { Jekyll::Commands::New.process(@args) } - success_message = "New jekyll site installed in #{@full_path}.\n" + success_message = "New jekyll site installed in #{@full_path}. \n" assert_equal success_message, output end