summaryrefslogtreecommitdiff
path: root/test/ruby/test_io.rb
diff options
context:
space:
mode:
authorTanaka Akira <[email protected]>2025-04-15 15:55:40 +0900
committerTanaka Akira <[email protected]>2025-04-15 15:55:40 +0900
commit698ef864a59004f468c77534d59e51e862ec2624 (patch)
tree77206692d5a8b7c50b3017382d226c498be10d49 /test/ruby/test_io.rb
parente1f544c1cf34787f139a973b934c9f535b201ea3 (diff)
`IO.select` accepts +Float::INFINITY+ as a timeout argument.
matz accepted at the developper meeting 2024-07-11.
Diffstat (limited to 'test/ruby/test_io.rb')
-rw-r--r--test/ruby/test_io.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb
index 255de0b0a0..32d7519bdf 100644
--- a/test/ruby/test_io.rb
+++ b/test/ruby/test_io.rb
@@ -4262,6 +4262,23 @@ __END__
end
end if Socket.const_defined?(:MSG_OOB)
+ def test_select_timeout
+ assert_equal(nil, IO.select(nil,nil,nil,0))
+ assert_equal(nil, IO.select(nil,nil,nil,0.0))
+ assert_raise(TypeError) { IO.select(nil,nil,nil,"invalid-timeout") }
+ assert_raise(ArgumentError) { IO.select(nil,nil,nil,-1) }
+ assert_raise(ArgumentError) { IO.select(nil,nil,nil,-0.1) }
+ assert_raise(ArgumentError) { IO.select(nil,nil,nil,-Float::INFINITY) }
+ assert_raise(RangeError) { IO.select(nil,nil,nil,Float::NAN) }
+ IO.pipe {|r, w|
+ w << "x"
+ ret = [[r], [], []]
+ assert_equal(ret, IO.select([r],nil,nil,0.1))
+ assert_equal(ret, IO.select([r],nil,nil,1))
+ assert_equal(ret, IO.select([r],nil,nil,Float::INFINITY))
+ }
+ end
+
def test_recycled_fd_close
dot = -'.'
IO.pipe do |sig_rd, sig_wr|