1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
require "spec"
require "log"
private def s(value : Log::Severity)
value
end
describe Log::BroadcastBackend do
it "writes to the backend based on level" do
main = Log::BroadcastBackend.new
backend_a = Log::MemoryBackend.new
backend_b = Log::MemoryBackend.new
main.append(backend_a, s(:info))
main.append(backend_b, s(:error))
debug_entry = Log::Entry.new("", s(:debug), "", Log::Metadata.empty, nil)
info_entry = Log::Entry.new("", s(:info), "", Log::Metadata.empty, nil)
error_entry = Log::Entry.new("", s(:error), "", Log::Metadata.empty, nil)
main.write debug_entry
main.write info_entry
main.write error_entry
backend_a.entries.should eq([info_entry, error_entry])
backend_b.entries.should eq([error_entry])
end
it "overwriting log level overwrites to all backends" do
main = Log::BroadcastBackend.new
backend_a = Log::MemoryBackend.new
backend_b = Log::MemoryBackend.new
main.append(backend_a, s(:info))
main.append(backend_b, s(:error))
log = Log.new("", main, s(:info))
log.level = s(:info)
log.info { "lorem" }
backend_a.entries.should_not be_empty
backend_b.entries.should_not be_empty
backend_a.entries.clear
backend_b.entries.clear
log.debug { "lorem" }
backend_a.entries.should be_empty
backend_b.entries.should be_empty
backend_a.entries.clear
backend_b.entries.clear
main.level = nil
log.info { "lorem" }
backend_a.entries.should_not be_empty
backend_b.entries.should be_empty
end
describe "#min_level" do
it "on empty" do
main = Log::BroadcastBackend.new
main.min_level.should eq(s(:none))
end
it "single backend" do
main = Log::BroadcastBackend.new
main.append(Log::MemoryBackend.new, s(:warn))
main.min_level.should eq(s(:warn))
end
it "multiple backends" do
main = Log::BroadcastBackend.new
main.append(Log::MemoryBackend.new, s(:info))
main.append(Log::MemoryBackend.new, s(:warn))
main.min_level.should eq(s(:info))
end
end
end
|