diff options
author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2020-12-23 19:08:52 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-23 19:08:52 +0900 |
commit | f150e592af1d77bf43a807fd6787764f1b5bd1a2 (patch) | |
tree | 0a39a33b9d00d11aa4964710739c5016c828e08c /test | |
parent | e2a628c7d3e5561940a3ac42239fff70f8e0cda5 (diff) | |
parent | 7da26358f18ec6d070d43a14b04a862517cc2f06 (diff) | |
download | psych-f150e592af1d77bf43a807fd6787764f1b5bd1a2.zip |
Merge pull request #471 from ruby/ractor
Ractor support
Diffstat (limited to 'test')
-rw-r--r-- | test/psych/test_ractor.rb | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/test/psych/test_ractor.rb b/test/psych/test_ractor.rb new file mode 100644 index 0000000..c6bed7c --- /dev/null +++ b/test/psych/test_ractor.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true +require_relative 'helper' + +class TestPsychRactor < Test::Unit::TestCase + def test_ractor_round_trip + assert_ractor(<<~RUBY, require_relative: 'helper') + obj = {foo: [42]} + obj2 = Ractor.new(obj) do |obj| + Psych.load(Psych.dump(obj)) + end.take + assert_equal obj, obj2 + RUBY + end + + def test_not_shareable + # There's no point in making these frozen / shareable + # and the C-ext disregards begin frozen + assert_ractor(<<~RUBY, require_relative: 'helper') + parser = Psych::Parser.new + emitter = Psych::Emitter.new(nil) + assert_raise(Ractor::Error) { Ractor.make_shareable(parser) } + assert_raise(Ractor::Error) { Ractor.make_shareable(emitter) } + RUBY + end + + def test_ractor_config + # Config is ractor-local + # Test is to make sure it works, even though usage is probably very low. + # The methods are not documented and might be deprecated one day + assert_ractor(<<~RUBY, require_relative: 'helper') + r = Ractor.new do + Psych.add_builtin_type 'omap' do |type, val| + val * 2 + end + Psych.load('--- !!omap hello') + end.take + assert_equal 'hellohello', r + assert_equal 'hello', Psych.load('--- !!omap hello') + RUBY + end + + def test_ractor_constants + assert_ractor(<<~RUBY, require_relative: 'helper') + r = Ractor.new do + Psych.libyaml_version.join('.') == Psych::LIBYAML_VERSION + end.take + assert_equal true, r + RUBY + end +end if defined?(Test::Unit::TestCase) |