1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Added dedicated helper methods

This commit is contained in:
Nobuyoshi Nakada 2020-12-21 15:04:06 +09:00
parent 7a094146e6
commit e70206f570
Notes: git 2020-12-23 13:51:08 +09:00

View file

@ -1174,6 +1174,24 @@ x = __ENCODING__
assert_equal(1, ex.message.scan(w).size, "same #{w.inspect} warning should be just once") assert_equal(1, ex.message.scan(w).size, "same #{w.inspect} warning should be just once")
end 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 def test_shareable_constant_value
assert_warning(/invalid value/) do assert_warning(/invalid value/) do
assert_valid_syntax("# shareable_constant_value: invalid-option", verbose: true) assert_valid_syntax("# shareable_constant_value: invalid-option", verbose: true)
@ -1181,7 +1199,7 @@ x = __ENCODING__
assert_warning(/ignored/) do assert_warning(/ignored/) do
assert_valid_syntax("nil # shareable_constant_value: true", verbose: true) assert_valid_syntax("nil # shareable_constant_value: true", verbose: true)
end end
a, b, c = Class.new.class_eval("#{<<~"begin;"}\n#{<<~'end;'}") a, b, c = eval_separately("#{<<~"begin;"}\n#{<<~'end;'}")
begin; begin;
# shareable_constant_value: experimental_everything # shareable_constant_value: experimental_everything
A = [[1]] A = [[1]]
@ -1193,12 +1211,13 @@ x = __ENCODING__
[A, B, C] [A, B, C]
end; end;
assert_send([Ractor, :shareable?, a]) assert_ractor_shareable(a)
assert_not_send([Ractor, :shareable?, b]) assert_not_ractor_shareable(b)
assert_send([Ractor, :shareable?, c]) assert_ractor_shareable(c)
assert_equal([1], a[0]) assert_equal([1], a[0])
assert_send([Ractor, :shareable?, a[0]]) assert_ractor_shareable(a[0])
a, b = Class.new.class_eval("#{<<~"begin;"}\n#{<<~'end;'}")
a, b = eval_separately("#{<<~"begin;"}\n#{<<~'end;'}")
begin; begin;
# shareable_constant_value: none # shareable_constant_value: none
class X class X
@ -1208,18 +1227,16 @@ x = __ENCODING__
B = [] B = []
[X::A, B] [X::A, B]
end; end;
assert_send([Ractor, :shareable?, a]) assert_ractor_shareable(a)
assert_not_send([Ractor, :shareable?, b]) assert_not_ractor_shareable(b)
assert_equal([1], a[0]) assert_equal([1], a[0])
assert_send([Ractor, :shareable?, a[0]]) assert_ractor_shareable(a[0])
assert_raise_with_message(Ractor::Error, /unshareable/) do assert_ractor_error(/unshareable/, "#{<<~"begin;"}\n#{<<~'end;'}")
Class.new.class_eval("#{<<~"begin;"}\n#{<<~'end;'}") begin;
begin; # shareable_constant_value: literal
# shareable_constant_value: literal C = ["Not " + "shareable"]
C = ["Not " + "shareable"] end;
end;
end
end end
=begin =begin