Improve logging and specs

This commit is contained in:
Sdogruyol 2016-07-28 21:12:55 +03:00
parent dc3cc74798
commit 98efbfe341
7 changed files with 41 additions and 30 deletions

View file

@ -0,0 +1,22 @@
require "./spec_helper"
describe "Kemal::CommonLogHandler" do
it "logs to the given IO" do
config = Kemal.config
io = MemoryIO.new
logger = Kemal::CommonLogHandler.new io
logger.write "Something"
io.to_s.should eq "Something"
end
it "creates log message for each request" do
request = HTTP::Request.new("GET", "/")
io = MemoryIO.new
context_io = MemoryIO.new
response = HTTP::Server::Response.new(context_io)
context = HTTP::Server::Context.new(request, response)
logger = Kemal::CommonLogHandler.new io
logger.call(context)
io.to_s.should_not be nil
end
end

View file

@ -1,14 +0,0 @@
require "./spec_helper"
describe "Kemal::LogHandler" do
it "creates a handler" do
logger = Kemal::CommonLogHandler.new
logger.handler.should_not be nil
end
it "creates a STDOUT handler by default" do
config = Kemal.config
logger = Kemal::CommonLogHandler.new
logger.handler.should be_a IO
end
end

View file

@ -9,7 +9,13 @@ class CustomTestHandler < HTTP::Handler
end
end
class CustomLogHandler < Kemal::BaseLogHandler; end
class CustomLogHandler < Kemal::BaseLogHandler
def call(context)
end
def write(message)
end
end
def create_request_and_return_io(handler, request)
io = MemoryIO.new

View file

@ -1,14 +1,7 @@
module Kemal
# All loggers must inherit from `Kemal::BaseLogHandler`.
class Kemal::BaseLogHandler < HTTP::Handler
def initialize
end
def call(context)
call_next context
end
def write(message)
end
abstract class Kemal::BaseLogHandler < HTTP::Handler
abstract def call(context)
abstract def write(message)
end
end

View file

@ -1,10 +1,9 @@
module Kemal
class CommonLogHandler < Kemal::BaseLogHandler
@handler : IO::FileDescriptor
getter handler
@handler : IO
def initialize
@handler = STDOUT
def initialize(io : IO)
@handler = io
end
def call(context)

View file

@ -74,7 +74,7 @@ module Kemal
private def setup_log_handler
@logger ||= if @logging
Kemal::CommonLogHandler.new
Kemal::CommonLogHandler.new(STDOUT)
else
Kemal::NullLogHandler.new
end

View file

@ -1,5 +1,10 @@
module Kemal
# This is here to represent the logger corresponding to Null Object Pattern.
class NullLogHandler < Kemal::BaseLogHandler
def call(context)
end
def write(message)
end
end
end