From f7c6a3660d8a2bcce6ad45bd4411c091532e3e67 Mon Sep 17 00:00:00 2001 From: Benoit Daloze Date: Tue, 19 May 2026 00:13:48 +0200 Subject: [PATCH] Enable all socket features on Linux to get a constant number of spec examples across Ruby implementations --- library/socket/spec_helper.rb | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/library/socket/spec_helper.rb b/library/socket/spec_helper.rb index b33663e02..86f3a6108 100644 --- a/library/socket/spec_helper.rb +++ b/library/socket/spec_helper.rb @@ -1,12 +1,14 @@ require_relative '../../spec_helper' require 'socket' -MSpec.enable_feature :sock_packet if Socket.const_defined?(:SOCK_PACKET) -MSpec.enable_feature :udp_cork if Socket.const_defined?(:UDP_CORK) -MSpec.enable_feature :tcp_cork if Socket.const_defined?(:TCP_CORK) -MSpec.enable_feature :pktinfo if Socket.const_defined?(:IP_PKTINFO) -MSpec.enable_feature :ipv6_pktinfo if Socket.const_defined?(:IPV6_PKTINFO) -MSpec.enable_feature :ip_mtu if Socket.const_defined?(:IP_MTU) -MSpec.enable_feature :ipv6_nexthop if Socket.const_defined?(:IPV6_NEXTHOP) -MSpec.enable_feature :tcp_info if Socket.const_defined?(:TCP_INFO) -MSpec.enable_feature :ancillary_data if Socket.const_defined?(:AncillaryData) +# We force enable all features on Linux because anyway Linux implements all these features, +# and we want a constant number of spec examples across Ruby implementations, even if they don't define these constants. +MSpec.enable_feature :sock_packet if platform_is(:linux) || Socket.const_defined?(:SOCK_PACKET) +MSpec.enable_feature :udp_cork if platform_is(:linux) || Socket.const_defined?(:UDP_CORK) +MSpec.enable_feature :tcp_cork if platform_is(:linux) || Socket.const_defined?(:TCP_CORK) +MSpec.enable_feature :pktinfo if platform_is(:linux) || Socket.const_defined?(:IP_PKTINFO) +MSpec.enable_feature :ipv6_pktinfo if platform_is(:linux) || Socket.const_defined?(:IPV6_PKTINFO) +MSpec.enable_feature :ip_mtu if platform_is(:linux) || Socket.const_defined?(:IP_MTU) +MSpec.enable_feature :ipv6_nexthop if platform_is(:linux) || Socket.const_defined?(:IPV6_NEXTHOP) +MSpec.enable_feature :tcp_info if platform_is(:linux) || Socket.const_defined?(:TCP_INFO) +MSpec.enable_feature :ancillary_data if platform_is(:linux) || Socket.const_defined?(:AncillaryData)