Renaming LogWriter to LogAdapter and adding tests for class
String coloring moved to Stevenson as not responsibility of LogAdapter
This commit is contained in:
parent
4a73e099b7
commit
e6345f39a9
|
@ -21,6 +21,7 @@ require 'time'
|
||||||
require 'safe_yaml/load'
|
require 'safe_yaml/load'
|
||||||
require 'English'
|
require 'English'
|
||||||
require 'pathname'
|
require 'pathname'
|
||||||
|
require 'logger'
|
||||||
|
|
||||||
# 3rd party
|
# 3rd party
|
||||||
require 'liquid'
|
require 'liquid'
|
||||||
|
@ -31,7 +32,7 @@ require 'toml'
|
||||||
# internal requires
|
# internal requires
|
||||||
require 'jekyll/version'
|
require 'jekyll/version'
|
||||||
require 'jekyll/utils'
|
require 'jekyll/utils'
|
||||||
require 'jekyll/log_writer'
|
require 'jekyll/log_adapter'
|
||||||
require 'jekyll/stevenson'
|
require 'jekyll/stevenson'
|
||||||
require 'jekyll/deprecator'
|
require 'jekyll/deprecator'
|
||||||
require 'jekyll/configuration'
|
require 'jekyll/configuration'
|
||||||
|
@ -116,11 +117,11 @@ module Jekyll
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.logger
|
def self.logger
|
||||||
@logger ||= LogWriter.new(Stevenson.new)
|
@logger ||= LogAdapter.new(Stevenson.new)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.logger=(writer)
|
def self.logger=(writer)
|
||||||
@logger = LogWriter.new(writer)
|
@logger = LogAdapter.new(writer)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Public: File system root
|
# Public: File system root
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
require 'logger'
|
require 'logger'
|
||||||
module Jekyll
|
module Jekyll
|
||||||
class LogWriter
|
class LogAdapter
|
||||||
attr_reader :writer
|
attr_reader :writer
|
||||||
|
|
||||||
LOG_LEVELS = {
|
LOG_LEVELS = {
|
||||||
|
@ -57,7 +57,7 @@ module Jekyll
|
||||||
#
|
#
|
||||||
# Returns nothing
|
# Returns nothing
|
||||||
def warn(topic, message = nil)
|
def warn(topic, message = nil)
|
||||||
writer.warn(message(topic, message).yellow)
|
writer.warn(message(topic, message))
|
||||||
end
|
end
|
||||||
|
|
||||||
# Public: Print a jekyll error message
|
# Public: Print a jekyll error message
|
||||||
|
@ -67,7 +67,7 @@ module Jekyll
|
||||||
#
|
#
|
||||||
# Returns nothing
|
# Returns nothing
|
||||||
def error(topic, message = nil)
|
def error(topic, message = nil)
|
||||||
writer.error(message(topic, message).red)
|
writer.error(message(topic, message))
|
||||||
end
|
end
|
||||||
|
|
||||||
# Public: Print a Jekyll error message and immediately abort the process
|
# Public: Print a Jekyll error message and immediately abort the process
|
||||||
|
@ -81,7 +81,9 @@ module Jekyll
|
||||||
abort
|
abort
|
||||||
end
|
end
|
||||||
|
|
||||||
# Public: Build a Jekyll topic method
|
private
|
||||||
|
|
||||||
|
# Internal: Build a Jekyll topic method
|
||||||
#
|
#
|
||||||
# topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc.
|
# topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc.
|
||||||
# message - the message detail
|
# message - the message detail
|
||||||
|
@ -91,7 +93,7 @@ module Jekyll
|
||||||
formatted_topic(topic) + message.to_s.gsub(/\s+/, ' ')
|
formatted_topic(topic) + message.to_s.gsub(/\s+/, ' ')
|
||||||
end
|
end
|
||||||
|
|
||||||
# Public: Format the topic
|
# Internal: Format the topic
|
||||||
#
|
#
|
||||||
# topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc.
|
# topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc.
|
||||||
#
|
#
|
|
@ -1,4 +1,3 @@
|
||||||
require 'logger'
|
|
||||||
module Jekyll
|
module Jekyll
|
||||||
class Stevenson < ::Logger
|
class Stevenson < ::Logger
|
||||||
def initialize
|
def initialize
|
||||||
|
@ -32,6 +31,16 @@ module Jekyll
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Log a +WARN+ message
|
||||||
|
def warn(progname = nil, &block)
|
||||||
|
add(WARN, nil, progname.yellow, &block)
|
||||||
|
end
|
||||||
|
|
||||||
|
# Log an +ERROR+ message
|
||||||
|
def error(progname = nil, &block)
|
||||||
|
add(ERROR, nil, progname.red, &block)
|
||||||
|
end
|
||||||
|
|
||||||
def close
|
def close
|
||||||
# No LogDevice in use
|
# No LogDevice in use
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
require 'helper'
|
||||||
|
|
||||||
|
class TestLogAdapter < Test::Unit::TestCase
|
||||||
|
class LoggerDouble
|
||||||
|
attr_accessor :level
|
||||||
|
end
|
||||||
|
|
||||||
|
context "#log_level=" do
|
||||||
|
should "set the writers logging level" do
|
||||||
|
subject = Jekyll::LogAdapter.new(LoggerDouble.new)
|
||||||
|
subject.log_level = :error
|
||||||
|
assert_equal Jekyll::LogAdapter::LOG_LEVELS[:error], subject.writer.level
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "#debug" do
|
||||||
|
should "call #debug on writer return true" do
|
||||||
|
writer = LoggerDouble.new
|
||||||
|
logger = Jekyll::LogAdapter.new(writer)
|
||||||
|
stub(writer).debug('topic '.rjust(20) + 'log message') { true }
|
||||||
|
assert logger.debug('topic', 'log message')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "#info" do
|
||||||
|
should "call #info on writer return true" do
|
||||||
|
writer = LoggerDouble.new
|
||||||
|
logger = Jekyll::LogAdapter.new(writer)
|
||||||
|
stub(writer).info('topic '.rjust(20) + 'log message') { true }
|
||||||
|
assert logger.info('topic', 'log message')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "#warn" do
|
||||||
|
should "call #warn on writer return true" do
|
||||||
|
writer = LoggerDouble.new
|
||||||
|
logger = Jekyll::LogAdapter.new(writer)
|
||||||
|
stub(writer).warn('topic '.rjust(20) + 'log message') { true }
|
||||||
|
assert logger.warn('topic', 'log message')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "#error" do
|
||||||
|
should "call #error on writer return true" do
|
||||||
|
writer = LoggerDouble.new
|
||||||
|
logger = Jekyll::LogAdapter.new(writer)
|
||||||
|
stub(writer).error('topic '.rjust(20) + 'log message') { true }
|
||||||
|
assert logger.error('topic', 'log message')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "#abort_with" do
|
||||||
|
should "call #error and abort" do
|
||||||
|
logger = Jekyll::LogAdapter.new(LoggerDouble.new)
|
||||||
|
stub(logger).error('topic', 'log message') { true }
|
||||||
|
assert_raise(SystemExit) { logger.abort_with('topic', 'log message') }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue