mirror of
https://github.com/ruby/ruby.git
synced 2025-09-24 04:54:01 +02:00
[ruby/etc] Make Ractor safe
This commit is contained in:
parent
3286380ebc
commit
cd63f0358f
Notes:
git
2020-12-23 09:46:32 +09:00
3 changed files with 46 additions and 14 deletions
|
@ -169,4 +169,27 @@ class TestEtc < Test::Unit::TestCase
|
|||
assert_operator(1, :<=, n)
|
||||
end
|
||||
|
||||
def test_ractor
|
||||
return unless Etc.passwd # => skip test if no platform support
|
||||
|
||||
assert_ractor(<<~RUBY, require: 'etc')
|
||||
ractor = Ractor.new do
|
||||
Etc.passwd do |s|
|
||||
Ractor.yield :sync
|
||||
Ractor.yield s.name
|
||||
break :done
|
||||
end
|
||||
end
|
||||
ractor.take # => :sync
|
||||
assert_raise RuntimeError, /parallel/ do
|
||||
Etc.passwd {}
|
||||
end
|
||||
name = ractor.take # => first name
|
||||
ractor.take # => :done
|
||||
name2 = Etc.passwd do |s|
|
||||
break s.name
|
||||
end
|
||||
assert_equal(name2, name)
|
||||
RUBY
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue