summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi SHIBATA <[email protected]>2024-06-04 17:53:49 +0900
committerHiroshi SHIBATA <[email protected]>2024-06-04 19:53:04 +0900
commit892849ac986f7e4121e22c7d532d6d6937c0f12c (patch)
treee301f644d3703934f1926fa00b076de77834f322
parent8ff5458c2edce15602b0f578d44c3118d9f8a035 (diff)
Remove dependency on fiddle from test/ruby
Co-authored-by: "Nobuyoshi Nakada" <[email protected]>
-rw-r--r--ext/-test-/thread/id/extconf.rb3
-rw-r--r--ext/-test-/thread/id/id.c15
-rw-r--r--test/ruby/test_thread.rb16
3 files changed, 27 insertions, 7 deletions
diff --git a/ext/-test-/thread/id/extconf.rb b/ext/-test-/thread/id/extconf.rb
new file mode 100644
index 0000000000..a0ae0eff15
--- /dev/null
+++ b/ext/-test-/thread/id/extconf.rb
@@ -0,0 +1,3 @@
+if have_func("gettid")
+ create_makefile("-test-/thread/id")
+end
diff --git a/ext/-test-/thread/id/id.c b/ext/-test-/thread/id/id.c
new file mode 100644
index 0000000000..b46a5955e2
--- /dev/null
+++ b/ext/-test-/thread/id/id.c
@@ -0,0 +1,15 @@
+#include <ruby.h>
+
+static VALUE
+bug_gettid(VALUE self)
+{
+ pid_t tid = gettid();
+ return PIDT2NUM(tid);
+}
+
+void
+Init_id(void)
+{
+ VALUE klass = rb_define_module_under(rb_define_module("Bug"), "ThreadID");
+ rb_define_module_function(klass, "gettid", bug_gettid, 0);
+}
diff --git a/test/ruby/test_thread.rb b/test/ruby/test_thread.rb
index da14c429e6..6620ccbf33 100644
--- a/test/ruby/test_thread.rb
+++ b/test/ruby/test_thread.rb
@@ -3,7 +3,6 @@
require 'test/unit'
require "rbconfig/sizeof"
require "timeout"
-require "fiddle"
class TestThread < Test::Unit::TestCase
class Thread < ::Thread
@@ -1446,13 +1445,16 @@ q.pop
end
def test_thread_native_thread_id_across_fork_on_linux
- rtld_default = Fiddle.dlopen(nil)
- omit "this test is only for Linux" unless rtld_default.sym_defined?('gettid')
-
- gettid = Fiddle::Function.new(rtld_default['gettid'], [], Fiddle::TYPE_INT)
+ begin
+ require '-test-/thread/id'
+ rescue LoadError
+ omit "this test is only for Linux"
+ else
+ extend Bug::ThreadID
+ end
parent_thread_id = Thread.main.native_thread_id
- real_parent_thread_id = gettid.call
+ real_parent_thread_id = gettid
assert_equal real_parent_thread_id, parent_thread_id
@@ -1464,7 +1466,7 @@ q.pop
else
# child
puts Thread.main.native_thread_id
- puts gettid.call
+ puts gettid
end
end
child_thread_id = child_lines[0].chomp.to_i