diff options
author | Eric Wong <normalperson@yhbt.net> | 2011-02-22 16:46:26 -0800 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2011-02-22 16:46:26 -0800 |
commit | 3a8a20d685dbfb500187099d76e56e848ad347ed (patch) | |
tree | e70d7bca1b7b60f8dfb731971fb92d65d09af42c /test | |
parent | c4c4554c3ceef9208fe7f8473b970e9f522ab9b9 (diff) | |
download | ruby_posix_mq-3a8a20d685dbfb500187099d76e56e848ad347ed.tar.gz |
Some ancient systems don't support mq_timedsend and mq_timedreceive but somehow manage to support other POSIX mq_* functions.
Diffstat (limited to 'test')
-rw-r--r-- | test/test_posix_mq.rb | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/test/test_posix_mq.rb b/test/test_posix_mq.rb index f7dec3c..8febb04 100644 --- a/test/test_posix_mq.rb +++ b/test/test_posix_mq.rb @@ -62,7 +62,7 @@ class Test_POSIX_MQ < Test::Unit::TestCase @mq = POSIX_MQ.new(@path, :rw) assert ! @mq.nonblock? t0 = Time.now - assert_raises(Errno::ETIMEDOUT) { @mq.receive "", interval } + maybe_timeout { @mq.receive "", interval } or return elapsed = Time.now - t0 assert elapsed > interval, elapsed.inspect assert elapsed < 0.02, elapsed.inspect @@ -76,7 +76,7 @@ class Test_POSIX_MQ < Test::Unit::TestCase @mq = POSIX_MQ.new(@path, :rw) assert ! @mq.nonblock? t0 = Time.now - assert_raises(Errno::ETIMEDOUT) { @mq.receive "", interval } + maybe_timeout { @mq.receive "", interval } or return elapsed = Time.now - t0 assert elapsed >= 0.01, elapsed.inspect assert elapsed <= 0.02, elapsed.inspect @@ -87,7 +87,7 @@ class Test_POSIX_MQ < Test::Unit::TestCase @mq = POSIX_MQ.new(@path, :rw) assert ! @mq.nonblock? t0 = Time.now - assert_raises(Errno::ETIMEDOUT) { @mq.receive "", interval } + maybe_timeout { @mq.receive "", interval } or return elapsed = Time.now - t0 assert elapsed >= interval, elapsed.inspect assert elapsed < 1.10, elapsed.inspect @@ -97,9 +97,15 @@ class Test_POSIX_MQ < Test::Unit::TestCase interval = 0.01 @mq = POSIX_MQ.new(@path, :rw, 0666, POSIX_MQ::Attr[0, 1, 1, 0]) assert ! @mq.nonblock? - assert_nothing_raised { @mq.send "A", 1, interval } + assert_nothing_raised { + begin + @mq.send "A", 1, interval + rescue NotImplementedError + return + end + } t0 = Time.now - assert_raises(Errno::ETIMEDOUT) { @mq.send "B", 1, interval } + maybe_timeout { @mq.send "B", 1, interval } or return elapsed = Time.now - t0 assert elapsed > interval end @@ -344,4 +350,15 @@ class Test_POSIX_MQ < Test::Unit::TestCase assert_raises(TypeError) { @mq.attr = {} } assert_raises(TypeError) { @mq.attr = Struct.new(:a,:b,:c,:d).new } end + + def maybe_timeout + yield + assert_raises(exc) { } # FAIL + return true + rescue Errno::ETIMEDOUT => e + return true + rescue NotImplementedError => e + warn "E: #{e}" + return false + end end |