summaryrefslogtreecommitdiff
path: root/spec/ruby/library/logger
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/logger')
-rw-r--r--spec/ruby/library/logger/device/close_spec.rb22
-rw-r--r--spec/ruby/library/logger/device/new_spec.rb47
-rw-r--r--spec/ruby/library/logger/device/write_spec.rb42
-rw-r--r--spec/ruby/library/logger/fixtures/common.rb9
-rw-r--r--spec/ruby/library/logger/logger/add_spec.rb81
-rw-r--r--spec/ruby/library/logger/logger/close_spec.rb20
-rw-r--r--spec/ruby/library/logger/logger/datetime_format_spec.rb60
-rw-r--r--spec/ruby/library/logger/logger/debug_spec.rb52
-rw-r--r--spec/ruby/library/logger/logger/error_spec.rb53
-rw-r--r--spec/ruby/library/logger/logger/fatal_spec.rb53
-rw-r--r--spec/ruby/library/logger/logger/info_spec.rb53
-rw-r--r--spec/ruby/library/logger/logger/new_spec.rb118
-rw-r--r--spec/ruby/library/logger/logger/unknown_spec.rb36
-rw-r--r--spec/ruby/library/logger/logger/warn_spec.rb53
-rw-r--r--spec/ruby/library/logger/severity_spec.rb13
15 files changed, 712 insertions, 0 deletions
diff --git a/spec/ruby/library/logger/device/close_spec.rb b/spec/ruby/library/logger/device/close_spec.rb
new file mode 100644
index 0000000000..1db5d582a7
--- /dev/null
+++ b/spec/ruby/library/logger/device/close_spec.rb
@@ -0,0 +1,22 @@
+require_relative '../../../spec_helper'
+require_relative '../fixtures/common'
+
+describe "Logger::LogDevice#close" do
+ before :each do
+ @file_path = tmp("test_log.log")
+ @log_file = File.open(@file_path, "w+")
+
+ # Avoid testing this with STDERR, we don't want to be closing that.
+ @device = Logger::LogDevice.new(@log_file)
+ end
+
+ after :each do
+ @log_file.close unless @log_file.closed?
+ rm_r @file_path
+ end
+
+ it "closes the LogDevice's stream" do
+ @device.close
+ -> { @device.write("Test") }.should complain(/\Alog shifting failed\./)
+ end
+end
diff --git a/spec/ruby/library/logger/device/new_spec.rb b/spec/ruby/library/logger/device/new_spec.rb
new file mode 100644
index 0000000000..c943e7fbe2
--- /dev/null
+++ b/spec/ruby/library/logger/device/new_spec.rb
@@ -0,0 +1,47 @@
+require_relative '../../../spec_helper'
+require_relative '../fixtures/common'
+
+describe "Logger::LogDevice#new" do
+ before :each do
+ @file_path = tmp("test_log.log")
+ @log_file = File.open(@file_path, "w+")
+ end
+
+ after :each do
+ @log_file.close unless @log_file.closed?
+ rm_r @file_path
+ end
+
+ it "creates a new log device" do
+ l = Logger::LogDevice.new(@log_file)
+ l.dev.should.is_a?(File)
+ end
+
+ it "receives an IO object to log there as first argument" do
+ @log_file.should.is_a?(IO)
+ l = Logger::LogDevice.new(@log_file)
+ l.write("foo")
+ @log_file.rewind
+ @log_file.readlines.first.should == "foo"
+ end
+
+ it "creates a File if the IO object does not exist" do
+ path = tmp("test_logger_file")
+ l = Logger::LogDevice.new(path)
+ l.write("Test message")
+ l.close
+
+ File.should.exist?(path)
+ File.open(path) do |f|
+ f.readlines.should_not.empty?
+ end
+
+ rm_r path
+ end
+
+ it "receives options via a hash as second argument" do
+ -> {
+ Logger::LogDevice.new(STDERR, shift_age: 8, shift_size: 10)
+ }.should_not.raise
+ end
+end
diff --git a/spec/ruby/library/logger/device/write_spec.rb b/spec/ruby/library/logger/device/write_spec.rb
new file mode 100644
index 0000000000..87ecf2ad6a
--- /dev/null
+++ b/spec/ruby/library/logger/device/write_spec.rb
@@ -0,0 +1,42 @@
+require_relative '../../../spec_helper'
+require_relative '../fixtures/common'
+
+describe "Logger::LogDevice#write" do
+ before :each do
+ @file_path = tmp("test_log.log")
+ @log_file = File.open(@file_path, "w+")
+ # Avoid testing this with STDERR, we don't want to be closing that.
+ @device = Logger::LogDevice.new(@log_file)
+ end
+
+ after :each do
+ @log_file.close unless @log_file.closed?
+ rm_r @file_path
+ end
+
+ it "writes a message to the device" do
+ @device.write "This is a test message"
+ @log_file.rewind
+ @log_file.readlines.first.should == "This is a test message"
+ end
+
+ it "can create a file and writes empty message" do
+ path = tmp("you_should_not_see_me")
+ logdevice = Logger::LogDevice.new(path)
+ logdevice.write("")
+ logdevice.close
+
+ File.open(path) do |f|
+ messages = f.readlines
+ messages.size.should == 1
+ messages.first.should =~ /#.*/ # only a comment
+ end
+
+ rm_r path
+ end
+
+ it "fails if the device is already closed" do
+ @device.close
+ -> { @device.write "foo" }.should complain(/\Alog shifting failed\./)
+ end
+end
diff --git a/spec/ruby/library/logger/fixtures/common.rb b/spec/ruby/library/logger/fixtures/common.rb
new file mode 100644
index 0000000000..d369c64a24
--- /dev/null
+++ b/spec/ruby/library/logger/fixtures/common.rb
@@ -0,0 +1,9 @@
+require 'logger'
+
+module LoggerSpecs
+
+ def self.strip_date(str)
+ str.gsub(/[A-Z].*\[.*\]/, "").lstrip
+ end
+
+end
diff --git a/spec/ruby/library/logger/logger/add_spec.rb b/spec/ruby/library/logger/logger/add_spec.rb
new file mode 100644
index 0000000000..98ac88f64f
--- /dev/null
+++ b/spec/ruby/library/logger/logger/add_spec.rb
@@ -0,0 +1,81 @@
+require_relative '../../../spec_helper'
+require_relative '../fixtures/common'
+
+describe "Logger#add" do
+ before :each do
+ @path = tmp("test_log.log")
+ @log_file = File.open(@path, "w+")
+ @logger = Logger.new(@path)
+ end
+
+ after :each do
+ @logger.close
+ @log_file.close unless @log_file.closed?
+ rm_r @path
+ end
+
+ it "writes a new message to the logger" do
+ @logger.add(Logger::WARN, "Test")
+ @log_file.rewind
+ message = @log_file.readlines.last
+ LoggerSpecs.strip_date(message).should == "WARN -- : Test\n"
+ end
+
+ it "receives a severity" do
+ @logger.log(Logger::INFO, "Info message")
+ @logger.log(Logger::DEBUG, "Debug message")
+ @logger.log(Logger::WARN, "Warn message")
+ @logger.log(Logger::ERROR, "Error message")
+ @logger.log(Logger::FATAL, "Fatal message")
+
+ @log_file.rewind
+
+ info, debug, warn, error, fatal = @log_file.readlines
+
+ LoggerSpecs.strip_date(info).should == "INFO -- : Info message\n"
+ LoggerSpecs.strip_date(debug).should == "DEBUG -- : Debug message\n"
+ LoggerSpecs.strip_date(warn).should == "WARN -- : Warn message\n"
+ LoggerSpecs.strip_date(error).should == "ERROR -- : Error message\n"
+ LoggerSpecs.strip_date(fatal).should == "FATAL -- : Fatal message\n"
+ end
+
+ it "receives a message" do
+ @logger.log(nil, "test")
+ @log_file.rewind
+ LoggerSpecs.strip_date(@log_file.readline).should == "ANY -- : test\n"
+ end
+
+ it "receives a program name" do
+ @logger.log(nil, "test", "TestApp")
+ @log_file.rewind
+ LoggerSpecs.strip_date(@log_file.readline).should == "ANY -- TestApp: test\n"
+ end
+
+ it "receives a block" do
+ -> {
+ @logger.log(nil, "test", "TestApp") do
+ 1+1
+ end
+ }.should_not.raise
+ end
+
+ it "calls the block if message is nil" do
+ temp = 0
+ -> {
+ @logger.log(nil, nil, "TestApp") do
+ temp = 1+1
+ end
+ }.should_not.raise
+ temp.should == 2
+ end
+
+ it "ignores the block if the message is not nil" do
+ temp = 0
+ -> {
+ @logger.log(nil, "not nil", "TestApp") do
+ temp = 1+1
+ end
+ }.should_not.raise
+ temp.should == 0
+ end
+end
diff --git a/spec/ruby/library/logger/logger/close_spec.rb b/spec/ruby/library/logger/logger/close_spec.rb
new file mode 100644
index 0000000000..81aac2a6cd
--- /dev/null
+++ b/spec/ruby/library/logger/logger/close_spec.rb
@@ -0,0 +1,20 @@
+require_relative '../../../spec_helper'
+require_relative '../fixtures/common'
+
+describe "Logger#close" do
+ before :each do
+ @path = tmp("test_log.log")
+ @log_file = File.open(@path, "w+")
+ @logger = Logger.new(@path)
+ end
+
+ after :each do
+ @log_file.close unless @log_file.closed?
+ rm_r @path
+ end
+
+ it "closes the logging device" do
+ @logger.close
+ -> { @logger.add(nil, "Foo") }.should complain(/\Alog writing failed\./)
+ end
+end
diff --git a/spec/ruby/library/logger/logger/datetime_format_spec.rb b/spec/ruby/library/logger/logger/datetime_format_spec.rb
new file mode 100644
index 0000000000..75a7f6cc03
--- /dev/null
+++ b/spec/ruby/library/logger/logger/datetime_format_spec.rb
@@ -0,0 +1,60 @@
+require_relative '../../../spec_helper'
+require_relative '../fixtures/common'
+
+describe "Logger#datetime_format" do
+ before :each do
+ @path = tmp("test_log.log")
+ @log_file = File.open(@path, "w+")
+ @logger = Logger.new(@path)
+ end
+
+ after :each do
+ @logger.close
+ @log_file.close unless @log_file.closed?
+ rm_r @path
+ end
+
+ it "returns the date format used for the logs" do
+ format = "%Y-%d"
+ @logger.datetime_format = format
+ @logger.datetime_format.should == format
+ end
+
+ it "returns nil logger is using the default date format" do
+ @logger.datetime_format.should == nil
+ end
+end
+
+describe "Logger#datetime_format=" do
+ before :each do
+ @path = tmp("test_log.log")
+ @log_file = File.open(@path, "w+")
+ @logger = Logger.new(@path)
+ end
+
+ after :each do
+ @logger.close
+ @log_file.close unless @log_file.closed?
+ rm_r @path
+ end
+
+ it "sets the date format for the logs" do
+ @logger.datetime_format = "%Y"
+ @logger.datetime_format.should == "%Y"
+ @logger.add(Logger::WARN, "Test message")
+ @log_file.rewind
+
+ regex = /2[0-9]{3}.*Test message/
+ @log_file.readlines.first.should =~ regex
+ end
+
+ it "follows the Time#strftime format" do
+ -> { @logger.datetime_format = "%Y-%m" }.should_not.raise
+
+ regex = /\d{4}-\d{2}-\d{2}oo-\w+ar/
+ @logger.datetime_format = "%Foo-%Bar"
+ @logger.add(nil, "Test message")
+ @log_file.rewind
+ @log_file.readlines.first.should =~ regex
+ end
+end
diff --git a/spec/ruby/library/logger/logger/debug_spec.rb b/spec/ruby/library/logger/logger/debug_spec.rb
new file mode 100644
index 0000000000..9375ab0cc6
--- /dev/null
+++ b/spec/ruby/library/logger/logger/debug_spec.rb
@@ -0,0 +1,52 @@
+require_relative '../../../spec_helper'
+require_relative '../fixtures/common'
+
+describe "Logger#debug?" do
+ before :each do
+ @path = tmp("test_log.log")
+ @log_file = File.open(@path, "w+")
+ @logger = Logger.new(@path)
+ end
+
+ after :each do
+ @logger.close
+ @log_file.close unless @log_file.closed?
+ rm_r @path
+ end
+
+ it "returns true if severity level allows debug messages" do
+ @logger.level = Logger::DEBUG
+ @logger.should.debug?
+ end
+
+ it "returns false if severity level does not allow debug messages" do
+ @logger.level = Logger::WARN
+ @logger.should_not.debug?
+ end
+end
+
+describe "Logger#debug" do
+ before :each do
+ @path = tmp("test_log.log")
+ @log_file = File.open(@path, "w+")
+ @logger = Logger.new(@path)
+ end
+
+ after :each do
+ @logger.close
+ @log_file.close unless @log_file.closed?
+ rm_r @path
+ end
+
+ it "logs a DEBUG message" do
+ @logger.debug("test")
+ @log_file.rewind
+ LoggerSpecs.strip_date(@log_file.readlines.first).should == "DEBUG -- : test\n"
+ end
+
+ it "accepts an application name with a block" do
+ @logger.debug("MyApp") { "Test message" }
+ @log_file.rewind
+ LoggerSpecs.strip_date(@log_file.readlines.first).should == "DEBUG -- MyApp: Test message\n"
+ end
+end
diff --git a/spec/ruby/library/logger/logger/error_spec.rb b/spec/ruby/library/logger/logger/error_spec.rb
new file mode 100644
index 0000000000..42f1dbd883
--- /dev/null
+++ b/spec/ruby/library/logger/logger/error_spec.rb
@@ -0,0 +1,53 @@
+require_relative '../../../spec_helper'
+require_relative '../fixtures/common'
+
+describe "Logger#error?" do
+ before :each do
+ @path = tmp("test_log.log")
+ @log_file = File.open(@path, "w+")
+ @logger = Logger.new(@path)
+ end
+
+ after :each do
+ @logger.close
+ @log_file.close unless @log_file.closed?
+ rm_r @path
+ end
+
+ it "returns true if severity level allows printing errors" do
+ @logger.level = Logger::INFO
+ @logger.should.error?
+ end
+
+ it "returns false if severity level does not allow errors" do
+ @logger.level = Logger::FATAL
+ @logger.should_not.error?
+ end
+end
+
+describe "Logger#error" do
+ before :each do
+ @path = tmp("test_log.log")
+ @log_file = File.open(@path, "w+")
+ @logger = Logger.new(@path)
+ end
+
+ after :each do
+ @logger.close
+ @log_file.close unless @log_file.closed?
+ rm_r @path
+ end
+
+ it "logs a ERROR message" do
+ @logger.error("test")
+ @log_file.rewind
+ LoggerSpecs.strip_date(@log_file.readlines.first).should == "ERROR -- : test\n"
+ end
+
+ it "accepts an application name with a block" do
+ @logger.error("MyApp") { "Test message" }
+ @log_file.rewind
+ LoggerSpecs.strip_date(@log_file.readlines.first).should == "ERROR -- MyApp: Test message\n"
+ end
+
+end
diff --git a/spec/ruby/library/logger/logger/fatal_spec.rb b/spec/ruby/library/logger/logger/fatal_spec.rb
new file mode 100644
index 0000000000..f12fa3a89f
--- /dev/null
+++ b/spec/ruby/library/logger/logger/fatal_spec.rb
@@ -0,0 +1,53 @@
+require_relative '../../../spec_helper'
+require_relative '../fixtures/common'
+
+describe "Logger#fatal?" do
+ before :each do
+ @path = tmp("test_log.log")
+ @log_file = File.open(@path, "w+")
+ @logger = Logger.new(@path)
+ end
+
+ after :each do
+ @logger.close
+ @log_file.close unless @log_file.closed?
+ rm_r @path
+ end
+
+ it "returns true if severity level allows fatal messages" do
+ @logger.level = Logger::FATAL
+ @logger.should.fatal?
+ end
+
+ it "returns false if severity level does not allow fatal messages" do
+ @logger.level = Logger::UNKNOWN
+ @logger.should_not.fatal?
+ end
+end
+
+describe "Logger#fatal" do
+ before :each do
+ @path = tmp("test_log.log")
+ @log_file = File.open(@path, "w+")
+ @logger = Logger.new(@path)
+ end
+
+ after :each do
+ @logger.close
+ @log_file.close unless @log_file.closed?
+ rm_r @path
+ end
+
+ it "logs a FATAL message" do
+ @logger.fatal("test")
+ @log_file.rewind
+ LoggerSpecs.strip_date(@log_file.readlines.first).should == "FATAL -- : test\n"
+ end
+
+ it "accepts an application name with a block" do
+ @logger.fatal("MyApp") { "Test message" }
+ @log_file.rewind
+ LoggerSpecs.strip_date(@log_file.readlines.first).should == "FATAL -- MyApp: Test message\n"
+ end
+
+end
diff --git a/spec/ruby/library/logger/logger/info_spec.rb b/spec/ruby/library/logger/logger/info_spec.rb
new file mode 100644
index 0000000000..eb5dca48dd
--- /dev/null
+++ b/spec/ruby/library/logger/logger/info_spec.rb
@@ -0,0 +1,53 @@
+require_relative '../../../spec_helper'
+require_relative '../fixtures/common'
+
+describe "Logger#info?" do
+ before :each do
+ @path = tmp("test_log.log")
+ @log_file = File.open(@path, "w+")
+ @logger = Logger.new(@path)
+ end
+
+ after :each do
+ @logger.close
+ @log_file.close unless @log_file.closed?
+ rm_r @path
+ end
+
+ it "returns true if severity level allows info messages" do
+ @logger.level = Logger::INFO
+ @logger.should.info?
+ end
+
+ it "returns false if severity level does not allow info messages" do
+ @logger.level = Logger::FATAL
+ @logger.should_not.info?
+ end
+end
+
+describe "Logger#info" do
+ before :each do
+ @path = tmp("test_log.log")
+ @log_file = File.open(@path, "w+")
+ @logger = Logger.new(@path)
+ end
+
+ after :each do
+ @logger.close
+ @log_file.close unless @log_file.closed?
+ rm_r @path
+ end
+
+ it "logs a INFO message" do
+ @logger.info("test")
+ @log_file.rewind
+ LoggerSpecs.strip_date(@log_file.readlines.first).should == "INFO -- : test\n"
+ end
+
+ it "accepts an application name with a block" do
+ @logger.info("MyApp") { "Test message" }
+ @log_file.rewind
+ LoggerSpecs.strip_date(@log_file.readlines.first).should == "INFO -- MyApp: Test message\n"
+ end
+
+end
diff --git a/spec/ruby/library/logger/logger/new_spec.rb b/spec/ruby/library/logger/logger/new_spec.rb
new file mode 100644
index 0000000000..b311c96132
--- /dev/null
+++ b/spec/ruby/library/logger/logger/new_spec.rb
@@ -0,0 +1,118 @@
+require_relative '../../../spec_helper'
+require_relative '../fixtures/common'
+
+describe "Logger#new" do
+
+ before :each do
+ @file_path = tmp("test_log.log")
+ @log_file = File.open(@file_path, "w+")
+ end
+
+ after :each do
+ @log_file.close unless @log_file.closed?
+ rm_r @file_path
+ end
+
+ it "creates a new logger object" do
+ l = Logger.new(STDERR)
+ -> { l.add(Logger::WARN, "Foo") }.should output_to_fd(/Foo/, STDERR)
+ end
+
+ it "receives a logging device as first argument" do
+ l = Logger.new(@log_file)
+ l.add(Logger::WARN, "Test message")
+
+ @log_file.rewind
+ LoggerSpecs.strip_date(@log_file.readline).should == "WARN -- : Test message\n"
+ l.close
+ end
+
+ it "receives a frequency rotation as second argument" do
+ -> { Logger.new(@log_file, "daily") }.should_not.raise
+ -> { Logger.new(@log_file, "weekly") }.should_not.raise
+ -> { Logger.new(@log_file, "monthly") }.should_not.raise
+ end
+
+ it "also receives a number of log files to keep as second argument" do
+ -> { Logger.new(@log_file, 1).close }.should_not.raise
+ end
+
+ it "receives a maximum logfile size as third argument" do
+ # This should create 2 small log files, logfile_test and logfile_test.0
+ # in /tmp, each one with a different message.
+ path = tmp("logfile_test.log")
+
+ l = Logger.new(path, 2, 5)
+ l.add Logger::WARN, "foo"
+ l.add Logger::WARN, "bar"
+
+ File.should.exist?(path)
+ File.should.exist?(path + ".0")
+
+ # first line will be a comment so we'll have to skip it.
+ f = File.open(path)
+ f1 = File.open("#{path}.0")
+ LoggerSpecs.strip_date(f1.readlines.last).should == "WARN -- : foo\n"
+ LoggerSpecs.strip_date(f.readlines.last).should == "WARN -- : bar\n"
+
+ l.close
+ f.close
+ f1.close
+ rm_r path, "#{path}.0"
+ end
+
+ it "receives level symbol as keyword argument" do
+ logger = Logger.new(STDERR, level: :info)
+ logger.level.should == Logger::INFO
+ end
+
+ it "receives level as keyword argument" do
+ logger = Logger.new(STDERR, level: Logger::INFO)
+ logger.level.should == Logger::INFO
+ end
+
+ it "receives progname as keyword argument" do
+ progname = "progname"
+
+ logger = Logger.new(STDERR, progname: progname)
+ logger.progname.should == progname
+ end
+
+ it "receives datetime_format as keyword argument" do
+ datetime_format = "%H:%M:%S"
+
+ logger = Logger.new(STDERR, datetime_format: datetime_format)
+ logger.datetime_format.should == datetime_format
+ end
+
+ it "receives formatter as keyword argument" do
+ formatter = Class.new do
+ def call(_severity, _time, _progname, _msg); end
+ end.new
+
+ logger = Logger.new(STDERR, formatter: formatter)
+ logger.formatter.should == formatter
+ end
+
+ it "receives shift_period_suffix" do
+ shift_period_suffix = "%Y-%m-%d"
+ path = tmp("shift_period_suffix_test.log")
+ now = Time.now
+ tomorrow = Time.at(now.to_i + 60 * 60 * 24)
+ logger = Logger.new(path, 'daily', shift_period_suffix: shift_period_suffix)
+
+ logger.add Logger::INFO, 'message'
+
+ Time.stub!(:now).and_return(tomorrow)
+ logger.add Logger::INFO, 'second message'
+
+ shifted_path = "#{path}.#{now.strftime(shift_period_suffix)}"
+
+ File.should.exist?(shifted_path)
+
+ logger.close
+
+ rm_r path, shifted_path
+ end
+
+end
diff --git a/spec/ruby/library/logger/logger/unknown_spec.rb b/spec/ruby/library/logger/logger/unknown_spec.rb
new file mode 100644
index 0000000000..4d37c9797e
--- /dev/null
+++ b/spec/ruby/library/logger/logger/unknown_spec.rb
@@ -0,0 +1,36 @@
+require_relative '../../../spec_helper'
+require_relative '../fixtures/common'
+
+describe "Logger#unknown" do
+ before :each do
+ @path = tmp("test_log.log")
+ @log_file = File.open(@path, "w+")
+ @logger = Logger.new(@path)
+ end
+
+ after :each do
+ @logger.close
+ @log_file.close unless @log_file.closed?
+ rm_r @path
+ end
+
+ it "logs a message with unknown severity" do
+ @logger.unknown "Test"
+ @log_file.rewind
+ LoggerSpecs.strip_date(@log_file.readlines.first).should == "ANY -- : Test\n"
+ end
+
+ it "defaults the priority value to 5 and text value to ANY" do
+ @logger.unknown "Test"
+ @log_file.rewind
+ message = LoggerSpecs.strip_date(@log_file.readlines.first)[0..2]
+ message.should == "ANY"
+ Logger::UNKNOWN.should == 5
+ end
+
+ it "receives empty messages" do
+ -> { @logger.unknown("") }.should_not.raise
+ @log_file.rewind
+ LoggerSpecs.strip_date(@log_file.readlines.first).should == "ANY -- : \n"
+ end
+end
diff --git a/spec/ruby/library/logger/logger/warn_spec.rb b/spec/ruby/library/logger/logger/warn_spec.rb
new file mode 100644
index 0000000000..0bca34824a
--- /dev/null
+++ b/spec/ruby/library/logger/logger/warn_spec.rb
@@ -0,0 +1,53 @@
+require_relative '../../../spec_helper'
+require_relative '../fixtures/common'
+
+describe "Logger#warn?" do
+ before :each do
+ @path = tmp("test_log.log")
+ @log_file = File.open(@path, "w+")
+ @logger = Logger.new(@path)
+ end
+
+ after :each do
+ @logger.close
+ @log_file.close unless @log_file.closed?
+ rm_r @path
+ end
+
+ it "returns true if severity level allows printing warn messages" do
+ @logger.level = Logger::WARN
+ @logger.should.warn?
+ end
+
+ it "returns false if severity level does not allow printing warn messages" do
+ @logger.level = Logger::FATAL
+ @logger.should_not.warn?
+ end
+end
+
+describe "Logger#warn" do
+ before :each do
+ @path = tmp("test_log.log")
+ @log_file = File.open(@path, "w+")
+ @logger = Logger.new(@path)
+ end
+
+ after :each do
+ @logger.close
+ @log_file.close unless @log_file.closed?
+ rm_r @path
+ end
+
+ it "logs a WARN message" do
+ @logger.warn("test")
+ @log_file.rewind
+ LoggerSpecs.strip_date(@log_file.readlines.first).should == "WARN -- : test\n"
+ end
+
+ it "accepts an application name with a block" do
+ @logger.warn("MyApp") { "Test message" }
+ @log_file.rewind
+ LoggerSpecs.strip_date(@log_file.readlines.first).should == "WARN -- MyApp: Test message\n"
+ end
+
+end
diff --git a/spec/ruby/library/logger/severity_spec.rb b/spec/ruby/library/logger/severity_spec.rb
new file mode 100644
index 0000000000..e9bc850c33
--- /dev/null
+++ b/spec/ruby/library/logger/severity_spec.rb
@@ -0,0 +1,13 @@
+require_relative '../../spec_helper'
+require 'logger'
+
+describe "Logger::Severity" do
+ it "defines Logger severity constants" do
+ Logger::DEBUG.should == 0
+ Logger::INFO.should == 1
+ Logger::WARN.should == 2
+ Logger::ERROR.should == 3
+ Logger::FATAL.should == 4
+ Logger::UNKNOWN.should == 5
+ end
+end