Bug #7420
closedWriteable pipe and timeout tests are failing (MinGW)
Description
=begin
The tests added in r37785, associated with Feature #4646 might require a guard against Windows because are failing in the Windows CI:
http://ci.rubyinstaller.org/job/ruby-trunk-x64-test-all/246/console
http://ci.rubyinstaller.org/job/ruby-trunk-x86-test-all/346/console
-
Error:
test_wait_writable_EPIPE(TestIOWait):
Errno::EWOULDBLOCK: A non-blocking socket operation could not be completed immediately. - write would block
C:/Users/Luis/Code/ruby/ruby/test/io/wait/test_io_wait.rb:103:inwrite_nonblock' C:/Users/Luis/Code/ruby/ruby/test/io/wait/test_io_wait.rb:103:in
fill_pipe'
C:/Users/Luis/Code/ruby/ruby/test/io/wait/test_io_wait.rb:87:in `test_wait_writable_EPIPE' -
Error:
test_wait_writable_timeout(TestIOWait):
Errno::EWOULDBLOCK: A non-blocking socket operation could not be completed immediately. - write would block
C:/Users/Luis/Code/ruby/ruby/test/io/wait/test_io_wait.rb:103:inwrite_nonblock' C:/Users/Luis/Code/ruby/ruby/test/io/wait/test_io_wait.rb:103:in
fill_pipe'
C:/Users/Luis/Code/ruby/ruby/test/io/wait/test_io_wait.rb:80:in `test_wait_writable_timeout'
=end
Updated by phasis68 (Heesob Park) almost 12 years ago
As I know, Errno::EWOULDBLOCK is not the same as Errno::EAGAIN on Windows.
Here is a patch:
diff --git a/test_io_wait.rb b/test_io_wait.rb.new
index 676809c..c322efd 100644
--- a/test_io_wait.rb
+++ b/test_io_wait.rb.new
@@ -101,7 +101,7 @@ private
buf = " " * 4096
begin
written += @w.write_nonblock(buf)
- rescue Errno::EAGAIN
- rescue Errno::EAGAIN,Errno::EWOULDBLOCK
return written
end while true
end
Updated by nobu (Nobuyoshi Nakada) almost 12 years ago
Thank you for the pointing out.
Since SystemCallError.=== matches by the errno values, so it works on platforms where they are just aliases, but EAGAIN and EWOULDBLOCK were actually different on Windows.
Should Errno::EAGAIN match an instance of Errno::EWOULDBLOCK on every platforms where those are defined?
Updated by nobu (Nobuyoshi Nakada) almost 12 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r37984.
Luis, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
test_io_wait.rb: Bug #7420
- test/io/wait/test_io_wait.rb (TestIOWait#fill_pipe):
Errno::EWOULDBLOCK may not be the same as Errno::EAGAIN. patch by
phasis68 (Heesob Park) at [ruby-core:49894]. [Bug #7420]