Add status to Ractor#inspect

This commit is contained in:
Quang-Minh Nguyen 2020-09-18 12:15:32 +07:00 committed by Koichi Sasada
parent 84c4c7bec8
commit d5fa66156a
Notes: git 2020-09-20 23:11:14 +09:00
2 changed files with 27 additions and 3 deletions

View File

@ -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

View File

@ -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