73 lines
2.0 KiB
Ruby
73 lines
2.0 KiB
Ruby
require 'abstract_unit'
|
|
require 'active_support/logger'
|
|
require 'active_support/tagged_logging'
|
|
|
|
class TaggedLoggingTest < ActiveSupport::TestCase
|
|
class MyLogger < ::ActiveSupport::Logger
|
|
def flush(*)
|
|
info "[FLUSHED]"
|
|
end
|
|
end
|
|
|
|
setup do
|
|
@output = StringIO.new
|
|
@logger = ActiveSupport::TaggedLogging.new(MyLogger.new(@output))
|
|
end
|
|
|
|
test "tagged once" do
|
|
@logger.tagged("BCX") { @logger.info "Funky time" }
|
|
assert_equal "[BCX] Funky time\n", @output.string
|
|
end
|
|
|
|
test "tagged twice" do
|
|
@logger.tagged("BCX") { @logger.tagged("Jason") { @logger.info "Funky time" } }
|
|
assert_equal "[BCX] [Jason] Funky time\n", @output.string
|
|
end
|
|
|
|
test "tagged thrice at once" do
|
|
@logger.tagged("BCX", "Jason", "New") { @logger.info "Funky time" }
|
|
assert_equal "[BCX] [Jason] [New] Funky time\n", @output.string
|
|
end
|
|
|
|
test "provides access to the logger instance" do
|
|
@logger.tagged("BCX") { |logger| logger.info "Funky time" }
|
|
assert_equal "[BCX] Funky time\n", @output.string
|
|
end
|
|
|
|
test "tagged once with blank and nil" do
|
|
@logger.tagged(nil, "", "New") { @logger.info "Funky time" }
|
|
assert_equal "[New] Funky time\n", @output.string
|
|
end
|
|
|
|
test "keeps each tag in their own thread" do
|
|
@logger.tagged("BCX") do
|
|
Thread.new do
|
|
@logger.tagged("OMG") { @logger.info "Cool story bro" }
|
|
end.join
|
|
@logger.info "Funky time"
|
|
end
|
|
assert_equal "[OMG] Cool story bro\n[BCX] Funky time\n", @output.string
|
|
end
|
|
|
|
test "cleans up the taggings on flush" do
|
|
@logger.tagged("BCX") do
|
|
Thread.new do
|
|
@logger.tagged("OMG") do
|
|
@logger.flush
|
|
@logger.info "Cool story bro"
|
|
end
|
|
end.join
|
|
end
|
|
assert_equal "[FLUSHED]\nCool story bro\n", @output.string
|
|
end
|
|
|
|
test "mixed levels of tagging" do
|
|
@logger.tagged("BCX") do
|
|
@logger.tagged("Jason") { @logger.info "Funky time" }
|
|
@logger.info "Junky time!"
|
|
end
|
|
|
|
assert_equal "[BCX] [Jason] Funky time\n[BCX] Junky time!\n", @output.string
|
|
end
|
|
end
|