summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2024-10-11 14:59:09 +0900
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2024-10-16 11:24:25 +0900
commitbbd5b8ddae7b3ff7205866d54cf8aca065a6d9bd (patch)
tree0716841193c6c36b4d44173ccaf54dbe99356897 /test
parenta0ecdbfbfe57a57ab33bdb5e1de4d5dfa8407dbb (diff)
[ruby/fiddle] Ractor support
(https://github.com/ruby/fiddle/pull/139) https://github.com/ruby/fiddle/commit/91d0ea9849 Co-authored-by: Sutou Kouhei <kou@clear-code.com>
Diffstat (limited to 'test')
-rw-r--r--test/fiddle/helper.rb5
-rw-r--r--test/fiddle/test_closure.rb12
-rw-r--r--test/fiddle/test_function.rb5
-rw-r--r--test/fiddle/test_handle.rb5
-rw-r--r--test/fiddle/test_memory_view.rb12
-rw-r--r--test/fiddle/test_pinned.rb8
-rw-r--r--test/fiddle/test_pointer.rb8
7 files changed, 54 insertions, 1 deletions
diff --git a/test/fiddle/helper.rb b/test/fiddle/helper.rb
index 9dfe381a20..aebe028206 100644
--- a/test/fiddle/helper.rb
+++ b/test/fiddle/helper.rb
@@ -189,5 +189,10 @@ module Fiddle
ensure
GC.stress = stress
end
+
+ def assert_ractor_shareable(object)
+ Ractor.make_shareable(object)
+ assert_operator(Ractor, :shareable?, object)
+ end
end
end
diff --git a/test/fiddle/test_closure.rb b/test/fiddle/test_closure.rb
index 787a9b635a..3985e1e2bf 100644
--- a/test/fiddle/test_closure.rb
+++ b/test/fiddle/test_closure.rb
@@ -152,5 +152,17 @@ module Fiddle
end
end
end
+
+ def test_ractor_shareable
+ omit("Need Ractor") unless defined?(Ractor)
+ closure_class = Class.new(Closure) do
+ def call
+ 0
+ end
+ end
+ closure_class.create(:int, [:void]) do |c|
+ assert_ractor_shareable(c)
+ end
+ end
end
end if defined?(Fiddle)
diff --git a/test/fiddle/test_function.rb b/test/fiddle/test_function.rb
index b6ae8c14bc..b4b2df2874 100644
--- a/test/fiddle/test_function.rb
+++ b/test/fiddle/test_function.rb
@@ -253,6 +253,11 @@ module Fiddle
end
end
+ def test_ractor_shareable
+ omit("Need Ractor") unless defined?(Ractor)
+ assert_ractor_shareable(Function.new(@libm['sin'], [TYPE_DOUBLE], TYPE_DOUBLE))
+ end
+
private
def perror(m)
diff --git a/test/fiddle/test_handle.rb b/test/fiddle/test_handle.rb
index c952a7ef17..2a51add852 100644
--- a/test/fiddle/test_handle.rb
+++ b/test/fiddle/test_handle.rb
@@ -226,5 +226,10 @@ module Fiddle
assert_equal(ansi, k["GetFileAttributes"], "should fallback to ANSI version")
end
end
+
+ def test_ractor_shareable
+ omit("Need Ractor") unless defined?(Ractor)
+ assert_ractor_shareable(Fiddle::Handle.new(LIBC_SO))
+ end
end
end if defined?(Fiddle)
diff --git a/test/fiddle/test_memory_view.rb b/test/fiddle/test_memory_view.rb
index d44c42d239..da00d66c91 100644
--- a/test/fiddle/test_memory_view.rb
+++ b/test/fiddle/test_memory_view.rb
@@ -159,5 +159,17 @@ module Fiddle
mview.release
end
end
+
+ def test_ractor_shareable
+ omit("Need Ractor") unless defined?(Ractor)
+ ptr = Pointer["hello world"]
+ mview = MemoryView.new(ptr)
+ begin
+ assert_ractor_shareable(mview)
+ assert_predicate(ptr, :frozen?)
+ ensure
+ mview.release
+ end
+ end
end
end
diff --git a/test/fiddle/test_pinned.rb b/test/fiddle/test_pinned.rb
index f0d375b1cc..ad132579b0 100644
--- a/test/fiddle/test_pinned.rb
+++ b/test/fiddle/test_pinned.rb
@@ -23,6 +23,12 @@ module Fiddle
end
assert_match "called on", ex.message
end
+
+ def test_ractor_shareable
+ omit("Need Ractor") unless defined?(Ractor)
+ obj = Object.new
+ assert_ractor_shareable(Pinned.new(obj))
+ assert_predicate(obj, :frozen?)
+ end
end
end
-
diff --git a/test/fiddle/test_pointer.rb b/test/fiddle/test_pointer.rb
index f17c8338f5..ea8015438e 100644
--- a/test/fiddle/test_pointer.rb
+++ b/test/fiddle/test_pointer.rb
@@ -305,5 +305,13 @@ module Fiddle
assert_raise(DLError) {nullpo[0]}
assert_raise(DLError) {nullpo[0] = 1}
end
+
+ def test_ractor_shareable
+ omit("Need Ractor") unless defined?(Ractor)
+ assert_ractor_shareable(Fiddle::NULL)
+ ary = [0, 1, 2, 4, 5]
+ addr = Pointer.new(dlwrap(ary))
+ assert_ractor_shareable(addr)
+ end
end
end if defined?(Fiddle)