diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-12-21 15:04:06 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-12-23 13:50:42 +0900 |
commit | e70206f5701fca5cce38dbfac8ffaa0d9a5c61a3 (patch) | |
tree | 886295f259b7089e51204652f85a00534db60b0b /test/ruby | |
parent | 7a094146e6ef38453a7e475450d90a9c83ea2277 (diff) | |
download | ruby-e70206f5701fca5cce38dbfac8ffaa0d9a5c61a3.tar.gz |
Added dedicated helper methods
Diffstat (limited to 'test/ruby')
-rw-r--r-- | test/ruby/test_parse.rb | 49 |
1 files changed, 33 insertions, 16 deletions
diff --git a/test/ruby/test_parse.rb b/test/ruby/test_parse.rb index 0a1e3edc66..e957dab06a 100644 --- a/test/ruby/test_parse.rb +++ b/test/ruby/test_parse.rb @@ -1174,6 +1174,24 @@ x = __ENCODING__ assert_equal(1, ex.message.scan(w).size, "same #{w.inspect} warning should be just once") end + def eval_separately(code) + Class.new.class_eval(code) + end + + def assert_ractor_error(message, code) + assert_raise_with_message(Ractor::Error, message) do + eval_separately(code) + end + end + + def assert_ractor_shareable(obj) + assert Ractor.shareable?(obj), ->{"Expected #{mu_pp(obj)} to be ractor shareable"} + end + + def assert_not_ractor_shareable(obj) + assert !Ractor.shareable?(obj), ->{"Expected #{mu_pp(obj)} not to be ractor shareable"} + end + def test_shareable_constant_value assert_warning(/invalid value/) do assert_valid_syntax("# shareable_constant_value: invalid-option", verbose: true) @@ -1181,7 +1199,7 @@ x = __ENCODING__ assert_warning(/ignored/) do assert_valid_syntax("nil # shareable_constant_value: true", verbose: true) end - a, b, c = Class.new.class_eval("#{<<~"begin;"}\n#{<<~'end;'}") + a, b, c = eval_separately("#{<<~"begin;"}\n#{<<~'end;'}") begin; # shareable_constant_value: experimental_everything A = [[1]] @@ -1193,12 +1211,13 @@ x = __ENCODING__ [A, B, C] end; - assert_send([Ractor, :shareable?, a]) - assert_not_send([Ractor, :shareable?, b]) - assert_send([Ractor, :shareable?, c]) + assert_ractor_shareable(a) + assert_not_ractor_shareable(b) + assert_ractor_shareable(c) assert_equal([1], a[0]) - assert_send([Ractor, :shareable?, a[0]]) - a, b = Class.new.class_eval("#{<<~"begin;"}\n#{<<~'end;'}") + assert_ractor_shareable(a[0]) + + a, b = eval_separately("#{<<~"begin;"}\n#{<<~'end;'}") begin; # shareable_constant_value: none class X @@ -1208,18 +1227,16 @@ x = __ENCODING__ B = [] [X::A, B] end; - assert_send([Ractor, :shareable?, a]) - assert_not_send([Ractor, :shareable?, b]) + assert_ractor_shareable(a) + assert_not_ractor_shareable(b) assert_equal([1], a[0]) - assert_send([Ractor, :shareable?, a[0]]) + assert_ractor_shareable(a[0]) - assert_raise_with_message(Ractor::Error, /unshareable/) do - Class.new.class_eval("#{<<~"begin;"}\n#{<<~'end;'}") - begin; - # shareable_constant_value: literal - C = ["Not " + "shareable"] - end; - end + assert_ractor_error(/unshareable/, "#{<<~"begin;"}\n#{<<~'end;'}") + begin; + # shareable_constant_value: literal + C = ["Not " + "shareable"] + end; end =begin |