0
@@ -31,149 +31,164 @@ describe Merb::Logger do
0
-
@logger = Merb::Logger.new(Merb.log_file)
0
+
# @logger = Merb::Logger.new(Merb.log_file)
0
it "should set the log level to :warn (4) when second parameter is :warn" do
0
- Merb::Logger.new(Merb.log_file, :warn).level.should eql(4)
0
+ Merb::Config[:log_level] = :warn
0
+ Merb.logger.level.should == 4
0
it "should set the log level to :debug (0) when Merb.environment is development" do
0
- Merb.should_receive(:environment).and_return("development")
0
- @logger.set_log(Merb.log_path / "development.log")
0
- @logger.level.should eql(0)
0
+ Merb.environment = "development"
0
+ Merb::Config.delete(:log_level)
0
+ Merb::BootLoader::Logger.run
0
+ Merb.logger.level.should == 0
0
it "should set the log level to :error (6) when Merb.environment is production" do
0
- Merb.should_receive(:environment).and_return("production")
0
- @logger.set_log(Merb.log_path / "production.log")
0
- @logger.level.should eql(4)
0
+ Merb.environment = "production"
0
+ Merb::Config.delete(:log_level)
0
+ Merb::BootLoader::Logger.run
0
+ Merb.logger.level.should == 4
0
- it "should initialize the buffer to an empty array" do
0
- @logger.buffer.should eql([])
0
it "should default the delimiter to ' ~ '" do
0
- @logger.delimiter.should eql(" ~ ")
0
- it "should assign the newly created object to Merb.logger" do
0
- @logger = Merb::Logger.new(Merb.log_file)
0
- Merb.logger.should eql(@logger)
0
+ Merb.logger.delimiter.should eql(" ~ ")
0
- @logger = Merb::Logger.new(Merb.log_file)
0
it "should immediately return if the buffer is empty" do
0
- @logger.should_not_receive(:write)
0
+ Merb::Config[:log_stream] = StringIO.new
0
+ Merb::Config[:log_stream].string.should == ""
0
it "should call the write_method with the stringified contents of the buffer if the buffer is non-empty" do
0
- @logger.send(:<<, "a message")
0
- @logger.send(:<<, "another message")
0
- @logger.log.should_receive(:write).with(" ~ a message\n ~ another message\n")
0
+ Merb::Config[:log_stream] = StringIO.new
0
+ Merb.logger << "a message"
0
+ Merb.logger << "another message"
0
+ Merb::Config[:log_stream].string.should == " ~ a message\n ~ another message\n"
0
- @logger = Merb::Logger.new(Merb.log_file)
0
+ # There were close specs here, but the logger isn't an IO anymore, and
0
+ # shares a stream with other loggers, so it shouldn't be closing the
0
- it "should flush the buffer before closing" do
0
- # TODO: how to specify order? eg. flush then close
0
- @logger.should_receive(:flush)
0
- @logger.log.should_receive(:close)
0
+ describe "level methods" do
0
- it "should call the close method if the log responds to close" do
0
- @logger.log.should_receive(:close)
0
+ Merb::Config[:log_level] = level
0
- it "shouldn't call the close method if the log is a terminal" do
0
- @logger.log.should_receive(:tty?).and_return(true)
0
- @logger.log.should_not_receive(:close)
0
+ @stream = Merb::Config[:log_stream] = StringIO.new
0
- it "should set the stored log attribute to nil" do
0
- @logger.log.should eql(nil)
0
+ it "should provide a #debug method which adds to the buffer in level :debug" do
0
+ Merb.logger.debug("message")
0
+ @stream.string.should == " ~ message\n"
0
+ it "should provide a #debug method which does not add to the buffer " \
0
+ "in level :info or higher" do
0
+ Merb.logger.debug("message")
0
+ @stream.string.should == ""
0
- describe "level methods" do
0
+ it "should provide an #info method which adds to the buffer in " \
0
+ "level :info or below" do
0
+ Merb.logger.info("message")
0
+ @stream.string.should == " ~ message\n"
0
- @logger = Merb::Logger.new(Merb.log_file)
0
+ it "should provide a #info method which does not add to the buffer " \
0
+ "in level :warn or higher" do
0
+ Merb.logger.info("message")
0
+ @stream.string.should == ""
0
- it "should provide a #debug method which can be used to log" do
0
- @logger.should respond_to(:debug)
0
- @logger.should_receive(:<<).with("message").and_return(true)
0
- @logger.debug("message")
0
+ it "should provide a #warn method which adds to the buffer in " \
0
+ "level :warn or below" do
0
+ Merb.logger.warn("message")
0
+ @stream.string.should == " ~ message\n"
0
- it "should provide a #info method which can be used to log" do
0
- @logger.should respond_to(:info)
0
- @logger.should_receive(:<<).with("message").and_return(true)
0
- @logger.info("message")
0
+ it "should provide a #warn method which does not add to the buffer " \
0
+ "in level :error or higher" do
0
+ Merb.logger.warn("message")
0
+ @stream.string.should == ""
0
- it "should provide a #warn method which can be used to log" do
0
- @logger.should respond_to(:warn)
0
- @logger.should_receive(:<<).with("message").and_return(true)
0
- @logger.warn("message")
0
+ it "should provide a #error method which adds to the buffer in " \
0
+ "level :error or below" do
0
+ Merb.logger.error("message")
0
+ @stream.string.should == " ~ message\n"
0
- it "should provide a #error method which can be used to log" do
0
- @logger.should respond_to(:error)
0
- @logger.should_receive(:<<).with("message").and_return(true)
0
- @logger.error("message")
0
+ it "should provide a #error method which does not add to the buffer " \
0
+ "in level :fatal or higher" do
0
+ Merb.logger.error("message")
0
+ @stream.string.should == ""
0
- it "should provide a #fatal method which can be used to log" do
0
- @logger.should respond_to(:fatal)
0
- @logger.should_receive(:<<).with("message").and_return(true)
0
- @logger.fatal("message")
0
+ it "should provide a #fatal method which always logs" do
0
+ Merb.logger.fatal("message")
0
+ @stream.string.should == " ~ message\n"
0
# TODO: add positive and negative tests for each of the methods below:
0
it "should provide a #debug? method" do
0
-
@logger.should respond_to(:debug?)
0
+
Merb.logger.should respond_to(:debug?)
0
it "should provide a #info? method" do
0
-
@logger.should respond_to(:info?)
0
+
Merb.logger.should respond_to(:info?)
0
it "should provide a #warn? method" do
0
-
@logger.should respond_to(:warn?)
0
+
Merb.logger.should respond_to(:warn?)
0
it "should provide a #error? method" do
0
-
@logger.should respond_to(:error?)
0
+
Merb.logger.should respond_to(:error?)
0
it "should provide a #fatal? method" do
0
-
@logger.should respond_to(:fatal?)
0
+
Merb.logger.should respond_to(:fatal?)