[Feature #19521] Test for Module#set_temporary_name

This commit is contained in:
Nobuyoshi Nakada 2025-01-29 16:55:44 +09:00
parent 9497820bcf
commit 7604588f6f
No known key found for this signature in database
GPG Key ID: 3582D74E1FEE4465

View File

@ -3365,6 +3365,40 @@ class TestModule < Test::Unit::TestCase
CODE
end
def test_set_temporary_name
m = Module.new
assert_nil m.name
m.const_set(:N, Module.new)
assert_match(/\A#<Module:0x\h+>::N\z/, m::N.name)
m::N.set_temporary_name("fake_name_under_M")
assert_equal("fake_name_under_M", m::N.name)
m::N.set_temporary_name(nil)
assert_nil(m::N.name)
m.set_temporary_name("fake_name")
assert_equal("fake_name", m.name)
m.set_temporary_name(nil)
assert_nil m.name
assert_raise_with_message(ArgumentError, "empty class/module name") do
m.set_temporary_name("")
end
%w[A A::B ::A ::A::B].each do |name|
assert_raise_with_message(ArgumentError, /must not be a constant path/) do
m.set_temporary_name(name)
end
end
[Object, User, AClass].each do |mod|
assert_raise_with_message(RuntimeError, /permanent name/) do
mod.set_temporary_name("fake_name")
end
end
end
private
def assert_top_method_is_private(method)