diff options
author | Marc-Andre Lafortune <github@marc-andre.ca> | 2020-12-21 23:31:11 -0500 |
---|---|---|
committer | Marc-André Lafortune <github@marc-andre.ca> | 2020-12-22 19:46:07 -0500 |
commit | cd63f0358ffb43890d20bb5612c5d82be19fae62 (patch) | |
tree | f51341602bea8993177c7ba5cd08daaf220eee86 /test | |
parent | 3286380ebcc239b3fe1044884780162f1ee079fe (diff) | |
download | ruby-cd63f0358ffb43890d20bb5612c5d82be19fae62.tar.gz |
[ruby/etc] Make Ractor safe
Diffstat (limited to 'test')
-rw-r--r-- | test/etc/test_etc.rb | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/test/etc/test_etc.rb b/test/etc/test_etc.rb index d2ae9fa33c..dc224d0d32 100644 --- a/test/etc/test_etc.rb +++ b/test/etc/test_etc.rb @@ -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 |