1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

tests: support Linux kernels with CONFIG_IPV6=n

Detecting the presence of constants in C headers is insufficient,
as a Linux kernel can be built with CONFIG_IPV6=n

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65055 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
normal 2018-10-13 05:18:49 +00:00
parent d7c806c079
commit 54ad3167e8
4 changed files with 29 additions and 21 deletions

View file

@ -237,13 +237,15 @@ describe 'BasicSocket#setsockopt' do
@socket.getsockopt(:IP, :TTL).int.should == 255
end
it 'sets an IPv6 boolean option' do
socket = Socket.new(:INET6, :STREAM)
begin
socket.setsockopt(:IPV6, :V6ONLY, true).should == 0
socket.getsockopt(:IPV6, :V6ONLY).bool.should == true
ensure
socket.close
guard -> { SocketSpecs.ipv6_available? } do
it 'sets an IPv6 boolean option' do
socket = Socket.new(:INET6, :STREAM)
begin
socket.setsockopt(:IPV6, :V6ONLY, true).should == 0
socket.getsockopt(:IPV6, :V6ONLY).bool.should == true
ensure
socket.close
end
end
end

View file

@ -50,7 +50,7 @@ module SocketSpecs
def self.ipv6_available?
@ipv6_available ||= begin
server = TCPServer.new('::1', 0)
rescue Errno::EADDRNOTAVAIL, SocketError
rescue Errno::EAFNOSUPPORT, Errno::EADDRNOTAVAIL, SocketError
:no
else
server.close

View file

@ -1,17 +1,19 @@
require_relative '../spec_helper'
describe 'Socket#ipv6only!' do
before do
@socket = Socket.new(:INET6, :DGRAM)
end
guard -> { SocketSpecs.ipv6_available? } do
describe 'Socket#ipv6only!' do
before do
@socket = Socket.new(:INET6, :DGRAM)
end
after do
@socket.close
end
after do
@socket.close
end
it 'enables IPv6 only mode' do
@socket.ipv6only!
it 'enables IPv6 only mode' do
@socket.ipv6only!
@socket.getsockopt(:IPV6, :V6ONLY).bool.should == true
@socket.getsockopt(:IPV6, :V6ONLY).bool.should == true
end
end
end

View file

@ -20,9 +20,13 @@ class TestSocket_UDPSocket < Test::Unit::TestCase
assert_match(/AF_INET\b/, sock.inspect)
}
if Socket.const_defined?(:AF_INET6)
UDPSocket.open(Socket::AF_INET6) {|sock|
assert_match(/AF_INET6\b/, sock.inspect)
}
begin
UDPSocket.open(Socket::AF_INET6) {|sock|
assert_match(/AF_INET6\b/, sock.inspect)
}
rescue Errno::EAFNOSUPPORT
skip 'AF_INET6 not supported by kernel'
end
end
end