Feature #16597 » 0011-tests-add-a-few-more-tests-for-select.patch
test/ruby/test_io.rb | ||
---|---|---|
def have_nonblock?
|
||
IO.method_defined?("nonblock=")
|
||
end
|
||
def have_poll?
|
||
IO.respond_to? :select_with_poll
|
||
end
|
||
end
|
||
include Feature
|
||
... | ... | |
end;
|
||
end
|
||
def test_select_raise
|
||
require 'fcntl'
|
||
fd = STDERR.fcntl(Fcntl::F_DUPFD)
|
||
io = IO.for_fd(fd, mode: 'w')
|
||
io2 = IO.for_fd(fd, mode: 'w')
|
||
io2.close
|
||
assert_raise(Errno::EBADF) {select [io], [io], [io]}
|
||
end
|
||
def test_poll_no_raise
|
||
require 'fcntl'
|
||
fd = STDERR.fcntl(Fcntl::F_DUPFD)
|
||
io = IO.for_fd(fd, mode: 'w')
|
||
io2 = IO.for_fd(fd, mode: 'w')
|
||
io2.close
|
||
assert_equal [[],[],[],[io]], (IO.select_with_poll [io], [io], [io], [io])
|
||
end if have_poll?
|
||
def startcmd *cmd
|
||
spawn_in, pipe_in = IO.pipe
|
||
pipe_out, spawn_out = IO.pipe
|
||
pipe_err, spawn_err = IO.pipe
|
||
pid = spawn(*cmd, :err=>spawn_err, :out=>spawn_out, :in=>spawn_in, :close_others=>true)
|
||
[spawn_in, spawn_out, spawn_err].each{|fd| fd.close}
|
||
[[pipe_in, pipe_out, pipe_err],pid]
|
||
end
|
||
def endcmd stuff
|
||
fds, pid = stuff
|
||
fds.each{|fd| fd.close rescue nil}
|
||
Process.waitpid pid
|
||
end
|
||
def test_select_cat
|
||
stuff = startcmd *%w(cat)
|
||
fds = stuff[0]
|
||
assert_equal [[],[fds[0]],[]], (IO.select fds, fds, fds, 0)
|
||
assert_equal [[],[fds[0]],[],[]], (IO.select_with_poll fds, fds, fds, fds, 0) if have_poll?
|
||
endcmd stuff
|
||
end
|
||
def test_select_uname
|
||
stuff = startcmd *%w(uname -a)
|
||
fds = stuff[0]
|
||
sleep 0.1
|
||
assert_equal [[fds[0],fds[1],fds[2]],[fds[0]],[]], (IO.select fds, fds, fds, 0)
|
||
assert_equal [[fds[1]],[fds[0]],[],[fds[0],fds[1],fds[2]]], (IO.select_with_poll fds, fds, fds, fds, 0) if have_poll?
|
||
endcmd stuff
|
||
end
|
||
def test_external_encoding_index
|
||
IO.pipe {|r, w|
|
||
assert_raise(TypeError) {Marshal.dump(r)}
|
- « Previous
- 1
- …
- 12
- 13
- 14
- Next »