mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
bb41909d8b
Instead of checking looking at the platform to determine if the tests relying on LOG_PERROR should be run, look for the definition of the constant as this will be robust against all platforms as long as the underlying syslog.c code sets it up correctly. This specifically addresses failures on Solaris 9. Signed-off-by: Ben Walton <bwalton@artsci.utoronto.ca> Signed-off-by: URABE, Shyouhei <shyouhei@ruby-lang.org> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31178 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
169 lines
3.5 KiB
Ruby
169 lines
3.5 KiB
Ruby
#!/usr/bin/env ruby
|
|
# $RoughId: test.rb,v 1.9 2002/02/25 08:20:14 knu Exp $
|
|
# $Id$
|
|
|
|
# Please only run this test on machines reasonable for testing.
|
|
# If in doubt, ask your admin.
|
|
|
|
require 'test/unit'
|
|
|
|
begin
|
|
require 'syslog'
|
|
rescue LoadError
|
|
# suppress error messages.
|
|
end
|
|
|
|
class TestSyslog < Test::Unit::TestCase
|
|
def test_new
|
|
assert_raises(NoMethodError) {
|
|
Syslog.new
|
|
}
|
|
end
|
|
|
|
def test_instance
|
|
sl1 = Syslog.instance
|
|
sl2 = Syslog.open
|
|
sl3 = Syslog.instance
|
|
|
|
assert_equal(Syslog, sl1)
|
|
assert_equal(Syslog, sl2)
|
|
assert_equal(Syslog, sl3)
|
|
ensure
|
|
Syslog.close if Syslog.opened?
|
|
end
|
|
|
|
def test_open
|
|
# default parameters
|
|
Syslog.open
|
|
|
|
assert_equal($0, Syslog.ident)
|
|
assert_equal(Syslog::LOG_PID | Syslog::LOG_CONS, Syslog.options)
|
|
assert_equal(Syslog::LOG_USER, Syslog.facility)
|
|
|
|
# open without close
|
|
assert_raises(RuntimeError) {
|
|
Syslog.open
|
|
}
|
|
|
|
Syslog.close
|
|
|
|
# given parameters
|
|
options = Syslog::LOG_NDELAY | Syslog::LOG_PID
|
|
Syslog.open("foo", options, Syslog::LOG_DAEMON)
|
|
|
|
assert_equal('foo', Syslog.ident)
|
|
assert_equal(options, Syslog.options)
|
|
assert_equal(Syslog::LOG_DAEMON, Syslog.facility)
|
|
|
|
Syslog.close
|
|
|
|
# default parameters again (after close)
|
|
Syslog.open
|
|
Syslog.close
|
|
|
|
assert_equal(nil, Syslog.ident)
|
|
assert_equal(nil, Syslog.options)
|
|
assert_equal(nil, Syslog.facility)
|
|
|
|
# block
|
|
param = nil
|
|
Syslog.open { |syslog|
|
|
param = syslog
|
|
}
|
|
assert_equal(Syslog, param)
|
|
ensure
|
|
Syslog.close if Syslog.opened?
|
|
end
|
|
|
|
def test_opened?
|
|
assert_equal(false, Syslog.opened?)
|
|
|
|
Syslog.open
|
|
assert_equal(true, Syslog.opened?)
|
|
|
|
Syslog.close
|
|
assert_equal(false, Syslog.opened?)
|
|
|
|
Syslog.open {
|
|
assert_equal(true, Syslog.opened?)
|
|
}
|
|
|
|
assert_equal(false, Syslog.opened?)
|
|
end
|
|
|
|
def test_close
|
|
assert_raises(RuntimeError) {
|
|
Syslog.close
|
|
}
|
|
end
|
|
|
|
def test_mask
|
|
assert_equal(nil, Syslog.mask)
|
|
|
|
Syslog.open
|
|
|
|
orig = Syslog.mask
|
|
|
|
Syslog.mask = Syslog.LOG_UPTO(Syslog::LOG_ERR)
|
|
assert_equal(Syslog.LOG_UPTO(Syslog::LOG_ERR), Syslog.mask)
|
|
|
|
Syslog.mask = Syslog.LOG_MASK(Syslog::LOG_CRIT)
|
|
assert_equal(Syslog.LOG_MASK(Syslog::LOG_CRIT), Syslog.mask)
|
|
|
|
Syslog.mask = orig
|
|
ensure
|
|
Syslog.close if Syslog.opened?
|
|
end
|
|
|
|
def test_log
|
|
stderr = IO::pipe
|
|
|
|
pid = fork {
|
|
stderr[0].close
|
|
STDERR.reopen(stderr[1])
|
|
stderr[1].close
|
|
|
|
options = Syslog::LOG_PERROR | Syslog::LOG_NDELAY
|
|
|
|
Syslog.open("syslog_test", options) { |sl|
|
|
sl.log(Syslog::LOG_NOTICE, "test1 - hello, %s!", "world")
|
|
sl.notice("test1 - hello, %s!", "world")
|
|
}
|
|
|
|
Syslog.open("syslog_test", options | Syslog::LOG_PID) { |sl|
|
|
sl.log(Syslog::LOG_CRIT, "test2 - pid")
|
|
sl.crit("test2 - pid")
|
|
}
|
|
exit!
|
|
}
|
|
|
|
stderr[1].close
|
|
Process.waitpid(pid)
|
|
|
|
# LOG_PERROR is not implemented on Cygwin or Solaris. Only test
|
|
# these on systems that define it.
|
|
return unless Syslog.const_defined?(:LOG_PERROR)
|
|
|
|
2.times {
|
|
assert_equal("syslog_test: test1 - hello, world!\n", stderr[0].gets)
|
|
}
|
|
|
|
2.times {
|
|
assert_equal(format("syslog_test[%d]: test2 - pid\n", pid), stderr[0].gets)
|
|
}
|
|
end
|
|
|
|
def test_inspect
|
|
Syslog.open { |sl|
|
|
assert_equal(format('<#%s: opened=true, ident="%s", options=%d, facility=%d, mask=%d>',
|
|
Syslog,
|
|
sl.ident,
|
|
sl.options,
|
|
sl.facility,
|
|
sl.mask),
|
|
sl.inspect)
|
|
}
|
|
|
|
assert_equal(format('<#%s: opened=false>', Syslog), Syslog.inspect)
|
|
end
|
|
end if defined?(Syslog)
|