diff options
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 |