diff options
Diffstat (limited to 'test/fiddle/helper.rb')
-rw-r--r-- | test/fiddle/helper.rb | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/test/fiddle/helper.rb b/test/fiddle/helper.rb index a6e2019924..e470f5a276 100644 --- a/test/fiddle/helper.rb +++ b/test/fiddle/helper.rb @@ -1,4 +1,6 @@ # frozen_string_literal: true + +require 'rbconfig/sizeof' require 'test/unit' require 'fiddle' @@ -47,8 +49,14 @@ when /linux/ libm_so = libc_so else # glibc - libc_so = "libc.so.6" - libm_so = "libm.so.6" + case RUBY_PLATFORM + when /alpha-linux/, /ia64-linux/ + libc_so = "libc.so.6.1" + libm_so = "libm.so.6.1" + else + libc_so = "libc.so.6" + libm_so = "libm.so.6" + end end when /mingw/, /mswin/ require "rbconfig" @@ -56,6 +64,8 @@ when /mingw/, /mswin/ libc_so = libm_so = "#{crtname}.dll" when /darwin/ libc_so = libm_so = "/usr/lib/libSystem.B.dylib" + # macOS 11.0+ removed libSystem.B.dylib from /usr/lib. But It works with dlopen. + rigid_path = true when /kfreebsd/ libc_so = "/lib/libc.so.0.1" libm_so = "/lib/libm.so.1" @@ -131,12 +141,9 @@ else end end -libc_so = nil if !libc_so || (libc_so[0] == ?/ && !File.file?(libc_so)) -libm_so = nil if !libm_so || (libm_so[0] == ?/ && !File.file?(libm_so)) - -# macOS 11.0+ removed libSystem.B.dylib from /usr/lib. But It works with dlopen. -if RUBY_PLATFORM =~ /darwin/ - libc_so = libm_so = "/usr/lib/libSystem.B.dylib" +unless rigid_path + libc_so = nil if libc_so && libc_so[0] == ?/ && !File.file?(libc_so) + libm_so = nil if libm_so && libm_so[0] == ?/ && !File.file?(libm_so) end if !libc_so || !libm_so @@ -166,5 +173,12 @@ module Fiddle GC.start end end + + def under_gc_stress + stress, GC.stress = GC.stress, true + yield + ensure + GC.stress = stress + end end end |