Update some ruby specs for the new message format of NoMethodError

This commit is contained in:
Yusuke Endoh 2023-01-24 17:44:14 +09:00
parent 8f868a1a65
commit 0e830e6373
Notes: git 2023-02-20 01:33:35 +00:00

View File

@ -62,26 +62,49 @@ describe "NoMethodError#message" do
NoMethodErrorSpecs::NoMethodErrorC.new.a_private_method NoMethodErrorSpecs::NoMethodErrorC.new.a_private_method
rescue Exception => e rescue Exception => e
e.should be_kind_of(NoMethodError) e.should be_kind_of(NoMethodError)
e.message.lines[0].should =~ /private method `a_private_method' called for #<NoMethodErrorSpecs::NoMethodErrorC:0x[\h]+>/ e.message.lines[0].should =~ /private method `a_private_method' called for /
end end
end end
it "calls receiver.inspect only when calling Exception#message" do ruby_version_is ""..."3.3" do
ScratchPad.record [] it "calls receiver.inspect only when calling Exception#message" do
test_class = Class.new do ScratchPad.record []
def inspect test_class = Class.new do
ScratchPad << :inspect_called def inspect
"<inspect>" ScratchPad << :inspect_called
"<inspect>"
end
end
instance = test_class.new
begin
instance.bar
rescue Exception => e
e.name.should == :bar
ScratchPad.recorded.should == []
e.message.should =~ /undefined method.+\bbar\b/
ScratchPad.recorded.should == [:inspect_called]
end end
end end
instance = test_class.new end
begin
instance.bar ruby_version_is "3.3" do
rescue Exception => e it "does not call receiver.inspect even when calling Exception#message" do
e.name.should == :bar ScratchPad.record []
ScratchPad.recorded.should == [] test_class = Class.new do
e.message.should =~ /undefined method.+\bbar\b/ def inspect
ScratchPad.recorded.should == [:inspect_called] ScratchPad << :inspect_called
"<inspect>"
end
end
instance = test_class.new
begin
instance.bar
rescue Exception => e
e.name.should == :bar
ScratchPad.recorded.should == []
e.message.should =~ /undefined method.+\bbar\b/
ScratchPad.recorded.should == []
end
end end
end end
@ -108,14 +131,14 @@ describe "NoMethodError#message" do
begin begin
klass.foo klass.foo
rescue NoMethodError => error rescue NoMethodError => error
error.message.lines.first.chomp.should == "undefined method `foo' for MyClass:Class" error.message.lines.first.chomp.should =~ /^undefined method `foo' for /
end end
mod = Module.new { def self.name; "MyModule"; end } mod = Module.new { def self.name; "MyModule"; end }
begin begin
mod.foo mod.foo
rescue NoMethodError => error rescue NoMethodError => error
error.message.lines.first.chomp.should == "undefined method `foo' for MyModule:Module" error.message.lines.first.chomp.should =~ /^undefined method `foo' for /
end end
end end
end end