diff options
author | Quang-Minh Nguyen <[email protected]> | 2020-09-18 12:15:32 +0700 |
---|---|---|
committer | Koichi Sasada <[email protected]> | 2020-09-20 23:10:44 +0900 |
commit | d5fa66156ab116df558448402b93c9c129b30291 (patch) | |
tree | 0a2d12b7d8628f680a6ed9d8be160fc0b7bced20 | |
parent | 84c4c7bec8f17081bc59e5447e2101ffc884fb2f (diff) |
Add status to Ractor#inspect
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3555
-rw-r--r-- | bootstraptest/test_ractor.rb | 21 | ||||
-rw-r--r-- | ractor.rb | 9 |
2 files changed, 27 insertions, 3 deletions
diff --git a/bootstraptest/test_ractor.rb b/bootstraptest/test_ractor.rb index ab20082711..4b6afc2c53 100644 --- a/bootstraptest/test_ractor.rb +++ b/bootstraptest/test_ractor.rb @@ -17,6 +17,27 @@ assert_equal "must be called with a block", %q{ end } +# Ractor#inspect +assert_equal "#<Ractor:#1 running>", %q{ + Ractor.current.inspect +} + +assert_match /^#<Ractor:#([^ ]*?) bootstraptest.tmp.rb:[0-9]+ blocking>$/, %q{ + r = Ractor.new { Ractor.recv } + r.inspect +} + +assert_match /^#<Ractor:#([^ ]*?) bootstraptest.tmp.rb:[0-9]+ terminated>$/, %q{ + r = Ractor.new { '' } + r.take + r.inspect +} + +assert_match /^#<Ractor:#([^ ]*?) Test Ractor bootstraptest.tmp.rb:[0-9]+ blocking>$/, %q{ + r = Ractor.new(name: 'Test Ractor') { Ractor.recv } + r.inspect +} + # A return value of a Ractor block will be a message from the Ractor. assert_equal 'ok', %q{ # join @@ -12,7 +12,7 @@ class Ractor # receive them. # # The result of the block is sent via the outgoing channel - # and other + # and other # # r = Ractor.new do # Ractor.recv # recv via r's mailbox => 1 @@ -29,7 +29,7 @@ class Ractor # # other options: # name: Ractor's name - # + # def self.new *args, name: nil, &block b = block # TODO: builtin bug raise ArgumentError, "must be called with a block" unless block @@ -132,7 +132,10 @@ class Ractor loc = __builtin_cexpr! %q{ RACTOR_PTR(self)->loc } name = __builtin_cexpr! %q{ RACTOR_PTR(self)->name } id = __builtin_cexpr! %q{ INT2FIX(RACTOR_PTR(self)->id) } - "#<Ractor:##{id}#{name ? ' '+name : ''}#{loc ? " " + loc : ''}>" + status = __builtin_cexpr! %q{ + rb_str_new2(ractor_status_str(RACTOR_PTR(self)->status_)) + } + "#<Ractor:##{id}#{name ? ' '+name : ''}#{loc ? " " + loc : ''} #{status}>" end def name |