Updated mcollective.init according to OSCI-658
[packages/precise/mcollective.git] / spec / unit / logger / console_logger_spec.rb
diff --git a/spec/unit/logger/console_logger_spec.rb b/spec/unit/logger/console_logger_spec.rb
new file mode 100644 (file)
index 0000000..15da7bd
--- /dev/null
@@ -0,0 +1,67 @@
+#!/usr/bin/env rspec
+
+require 'spec_helper'
+
+module MCollective
+  require 'mcollective/logger/console_logger'
+
+  module Logger
+    describe Console_logger do
+      describe "#start" do
+        it "should default to :info and allow the config to override" do
+          logger = Console_logger.new
+          logger.expects(:set_level).with(:info)
+          Config.instance.expects(:configured).returns(true)
+          Config.instance.expects(:loglevel).returns("error")
+          logger.expects(:set_level).with(:error)
+          logger.start
+        end
+      end
+
+      describe "#color" do
+        it "should not colorize if color was disabled" do
+          logger = Console_logger.new
+          Config.instance.stubs(:color).returns(false)
+          logger.color(:error).should == ""
+          logger.color(:reset).should == ""
+        end
+
+        it "should correctly colorize by level" do
+          logger = Console_logger.new
+          Config.instance.stubs(:color).returns(true)
+          logger.color(:error).should == Util.color(:red)
+          logger.color(:reset).should == Util.color(:reset)
+        end
+      end
+
+      describe "#log" do
+        it "should log higher than configured levels" do
+          io = StringIO.new
+          io.expects(:puts).with("error 2012/07/03 15:11:35: rspec message")
+
+          time = stub
+          time.expects(:strftime).returns("2012/07/03 15:11:35")
+
+          Time.expects(:new).returns(time)
+
+          Config.instance.stubs(:color).returns(false)
+          logger = Console_logger.new
+          logger.set_level(:warn)
+          logger.log(:error, "rspec", "message", io)
+        end
+
+        it "should resort to STDERR output if all else fails" do
+          io = StringIO.new
+          io.expects(:puts).raises
+
+          last_resort_io = StringIO.new
+          last_resort_io.expects(:puts).with("warn: message")
+
+          logger = Console_logger.new
+          logger.set_level(:debug)
+          logger.log(:warn, "rspec", "message", io, last_resort_io)
+        end
+      end
+    end
+  end
+end