Skip to content
This repository has been archived by the owner on Dec 8, 2020. It is now read-only.

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
binarylogic committed Mar 1, 2017
1 parent b31e321 commit bc92ec5
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 0 deletions.
41 changes: 41 additions & 0 deletions lib/timber/overrides/logger_add.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
module Timber
module Overrides
module LoggerAdd
def self.included(klass)
klass.class_eval do
alias_method :_timber_original_add, :add

def add(severity, message = nil, progname = nil)
# Extract the message: https://github.com/ruby/ruby/blob/f6e77b9d3555c1fbaa8aab1cdc0bd6bde95f62c6/lib/logger.rb#L461-L468
progname ||= @progname
if message.nil?
if block_given?
message = yield
else
message = progname
progname = @progname
end
end

if message.is_a?(::Timber::Event)
if self.is_a?(::Timber::Logger)
_timber_original_add(severity, message, progname)
else
if message.message.nil?
STDOUT.write message.inspect
end
_timber_original_add(severity, message.message, progname)
end
else
_timber_original_add(severity, message, progname)
end
end
end
end
end
end
end

require "logger"

::Logger.send(:include, Timber::Overrides::LoggerAdd)
10 changes: 10 additions & 0 deletions spec/timber/event_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
require "spec_helper"

describe Timber::Event, :rails_23 => true do
describe "#to_s" do
it "should display the message" do
event = Timber::Events::Custom.new(message: "Build version 1.0.0", type: :build, data: {version: "1.0.0"})
expect(event.to_s).to eq("Build version 1.0.0")
end
end
end
21 changes: 21 additions & 0 deletions spec/timber/overrides/logger_add_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
require "spec_helper"

describe Timber::Overrides::LoggerAdd, :rails_23 => true do
describe "#add" do
it "should display the message only when passed to a default logger" do
event = Timber::Events::Custom.new(message: "Build version 1.0.0", type: :build, data: {version: "1.0.0"})
io = StringIO.new
logger = ::Logger.new(io)
logger.info(event)
expect(io.string).to eq("Build version 1.0.0\n")
end

it "should work with blocks" do
event = Timber::Events::Custom.new(message: "Build version 1.0.0", type: :build, data: {version: "1.0.0"})
io = StringIO.new
logger = ::Logger.new(io)
logger.info { event }
expect(io.string).to eq("Build version 1.0.0\n")
end
end
end

0 comments on commit bc92ec5

Please sign in to comment.