From bc92ec51d193838d6702cd65fefe851c1e248745 Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Wed, 1 Mar 2017 16:13:16 -0600 Subject: [PATCH] Add tests --- lib/timber/overrides/logger_add.rb | 41 ++++++++++++++++++++++++ spec/timber/event_spec.rb | 10 ++++++ spec/timber/overrides/logger_add_spec.rb | 21 ++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 lib/timber/overrides/logger_add.rb create mode 100644 spec/timber/event_spec.rb create mode 100644 spec/timber/overrides/logger_add_spec.rb diff --git a/lib/timber/overrides/logger_add.rb b/lib/timber/overrides/logger_add.rb new file mode 100644 index 00000000..447ec534 --- /dev/null +++ b/lib/timber/overrides/logger_add.rb @@ -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) \ No newline at end of file diff --git a/spec/timber/event_spec.rb b/spec/timber/event_spec.rb new file mode 100644 index 00000000..9c20c5c0 --- /dev/null +++ b/spec/timber/event_spec.rb @@ -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 \ No newline at end of file diff --git a/spec/timber/overrides/logger_add_spec.rb b/spec/timber/overrides/logger_add_spec.rb new file mode 100644 index 00000000..544cf777 --- /dev/null +++ b/spec/timber/overrides/logger_add_spec.rb @@ -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 \ No newline at end of file