diff options
author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2021-11-11 18:12:18 +0900 |
---|---|---|
committer | nagachika <nagachika@ruby-lang.org> | 2021-11-22 10:51:35 +0900 |
commit | bfed3296ec81c2ca53e65dc3df5b0e8f1e6810ab (patch) | |
tree | 257ff71066a4fc01afb7c07527c8d03e7098f53f /test/io | |
parent | 4716a8e157044b3a3a490c96957eb6c9204d70f1 (diff) |
Bump io-wait version to 0.2.0
Diffstat (limited to 'test/io')
-rw-r--r-- | test/io/wait/test_io_wait_uncommon.rb | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/test/io/wait/test_io_wait_uncommon.rb b/test/io/wait/test_io_wait_uncommon.rb index 28b4a0f8c4..b6f1c29bcd 100644 --- a/test/io/wait/test_io_wait_uncommon.rb +++ b/test/io/wait/test_io_wait_uncommon.rb @@ -6,15 +6,10 @@ require 'io/wait' # We may optimize IO#wait_*able for non-Linux kernels in the future class TestIOWaitUncommon < Test::Unit::TestCase def test_tty_wait - begin - tty = File.open('/dev/tty', 'w+') - rescue Errno::ENOENT, Errno::ENXIO => e - skip "/dev/tty: #{e.message} (#{e.class})" + check_dev('/dev/tty', mode: 'w+') do |tty| + assert_include [ nil, tty ], tty.wait_readable(0) + assert_equal tty, tty.wait_writable(1), 'portability test' end - assert_include [ nil, tty ], tty.wait_readable(0) - assert_equal tty, tty.wait_writable(1), 'portability test' - ensure - tty&.close end def test_fifo_wait @@ -44,36 +39,40 @@ class TestIOWaitUncommon < Test::Unit::TestCase # used to find portability problems because some ppoll implementations # are incomplete and do not work for certain "file" types - def check_dev(dev, m = :wait_readable) + def check_dev(dev, m = :wait_readable, mode: m == :wait_readable ? 'r' : 'w', &block) begin - fp = File.open("/dev/#{dev}", m == :wait_readable ? 'r' : 'w') + fp = File.open(dev, mode) + rescue Errno::ENOENT + return # Ignore silently rescue SystemCallError => e skip "#{dev} could not be opened #{e.message} (#{e.class})" end - assert_same fp, fp.__send__(m) + if block + yield fp + else + assert_same fp, fp.__send__(m) + end ensure fp&.close end def test_wait_readable_urandom - check_dev 'urandom' + check_dev('/dev/urandom') end def test_wait_readable_random - File.open('/dev/random') do |fp| + check_dev('/dev/random') do |fp| assert_nothing_raised do fp.wait_readable(0) end end - rescue SystemCallError => e - skip "/dev/random could not be opened #{e.message} (#{e.class})" end def test_wait_readable_zero - check_dev 'zero' + check_dev('/dev/zero') end def test_wait_writable_null - check_dev 'null', :wait_writable + check_dev(IO::NULL, :wait_writable) end end |