Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 6ec77e4c30
Fetching contributors…

Cannot retrieve contributors at this time

142 lines (120 sloc) 3.708 kb
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
require 'phusion_passenger/debug_logging'
require 'phusion_passenger/utils/tmpdir'
require 'stringio'
module PhusionPassenger
describe DebugLogging do
after :each do
DebugLogging.log_level = 0
DebugLogging.log_file = nil
DebugLogging.stderr_evaluator = nil
end
class MyClass
include DebugLogging
end
def use_log_file!
@log_file = PhusionPassenger::Utils.passenger_tmpdir + "/debug.log"
DebugLogging.log_file = @log_file
end
describe "#debug" do
it "doesn't print the message if log level is 0" do
use_log_file!
DebugLogging.debug("hello")
File.exist?(@log_file).should be_false
end
it "prints the message if log level is 1" do
use_log_file!
DebugLogging.log_level = 1
DebugLogging.debug("hello")
File.exist?(@log_file).should be_true
end
it "prints the message if log level is greater than 1" do
use_log_file!
DebugLogging.log_level = 2
DebugLogging.debug("hello")
File.exist?(@log_file).should be_true
end
it "prints the location of the calling function" do
use_log_file!
DebugLogging.log_level = 1
DebugLogging.debug("hello")
File.read(@log_file).should include("debug_logging_spec.rb")
end
it "prints to STDERR by default" do
io = StringIO.new
DebugLogging.log_level = 1
DebugLogging.stderr_evaluator = lambda { io }
DebugLogging.debug("hello")
io.string.should include("hello")
end
it "reopens the log file handle if it has been closed" do
use_log_file!
DebugLogging.log_level = 1
DebugLogging.debug("hello")
DebugLogging._log_device.close
DebugLogging.debug("world")
File.read(@log_file).should include("world")
end
it "also works as included method" do
use_log_file!
DebugLogging.log_level = 1
MyClass.new.send(:debug, "hello")
File.read(@log_file).should include("hello")
end
it "is private when included" do
MyClass.private_method_defined?(:debug)
end
end
describe "#trace" do
specify "#trace(x, ...) doesn't print the message if the log level is lower than x" do
use_log_file!
DebugLogging.log_level = 1
DebugLogging.trace(2, "hello")
File.exist?(@log_file).should be_false
end
specify "#trace(x, ...) prints the message if the log level equals x" do
use_log_file!
DebugLogging.log_level = 2
DebugLogging.trace(2, "hello")
File.exist?(@log_file).should be_true
end
specify "#trace(x, ...) prints the message if the log level is greater than x" do
use_log_file!
DebugLogging.log_level = 3
DebugLogging.trace(2, "hello")
File.exist?(@log_file).should be_true
end
specify "#trace prints the location of the calling function" do
io = StringIO.new
DebugLogging.log_level = 1
DebugLogging.stderr_evaluator = lambda { io }
DebugLogging.trace(1, "hello")
io.string.should include("hello")
end
it "prints to STDERR by default" do
io = StringIO.new
DebugLogging.log_level = 1
DebugLogging.stderr_evaluator = lambda { io }
DebugLogging.trace(1, "hello")
io.string.should include("hello")
end
it "reopens the log file handle if it has been closed" do
use_log_file!
DebugLogging.log_level = 1
DebugLogging.trace(1, "hello")
DebugLogging._log_device.close
DebugLogging.trace(1, "world")
File.read(@log_file).should include("world")
end
it "also works as included method" do
use_log_file!
DebugLogging.log_level = 1
MyClass.new.send(:trace, 1, "hello")
File.read(@log_file).should include("hello")
end
it "is private when included" do
MyClass.private_method_defined?(:trace)
end
end
end
end # module PhusionPassenger
Jump to Line
Something went wrong with that request. Please try again.