diff options
| author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2024-10-11 14:59:09 +0900 |
|---|---|---|
| committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2024-10-16 11:24:25 +0900 |
| commit | bbd5b8ddae7b3ff7205866d54cf8aca065a6d9bd (patch) | |
| tree | 0716841193c6c36b4d44173ccaf54dbe99356897 /test/fiddle | |
| parent | a0ecdbfbfe57a57ab33bdb5e1de4d5dfa8407dbb (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/fiddle')
| -rw-r--r-- | test/fiddle/helper.rb | 5 | ||||
| -rw-r--r-- | test/fiddle/test_closure.rb | 12 | ||||
| -rw-r--r-- | test/fiddle/test_function.rb | 5 | ||||
| -rw-r--r-- | test/fiddle/test_handle.rb | 5 | ||||
| -rw-r--r-- | test/fiddle/test_memory_view.rb | 12 | ||||
| -rw-r--r-- | test/fiddle/test_pinned.rb | 8 | ||||
| -rw-r--r-- | test/fiddle/test_pointer.rb | 8 |
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) |
