diff options
author | Yusuke Endoh <mame@ruby-lang.org> | 2023-01-24 17:44:14 +0900 |
---|---|---|
committer | Yusuke Endoh <mame@ruby-lang.org> | 2023-02-20 10:33:06 +0900 |
commit | 0e830e6373b334a806dddb57c13f233674bd0054 (patch) | |
tree | 28e490e393a144129d9fb8e43e10b704f4b93c98 /spec/ruby/core | |
parent | 8f868a1a65383359e565ed0c874e0d2cba95b0ee (diff) | |
download | ruby-0e830e6373b334a806dddb57c13f233674bd0054.tar.gz |
Update some ruby specs for the new message format of NoMethodError
Diffstat (limited to 'spec/ruby/core')
-rw-r--r-- | spec/ruby/core/exception/no_method_error_spec.rb | 57 |
1 files changed, 40 insertions, 17 deletions
diff --git a/spec/ruby/core/exception/no_method_error_spec.rb b/spec/ruby/core/exception/no_method_error_spec.rb index 8428ba0382..f84f3418a4 100644 --- a/spec/ruby/core/exception/no_method_error_spec.rb +++ b/spec/ruby/core/exception/no_method_error_spec.rb @@ -62,26 +62,49 @@ describe "NoMethodError#message" do NoMethodErrorSpecs::NoMethodErrorC.new.a_private_method rescue Exception => e 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 - it "calls receiver.inspect only when calling Exception#message" do - ScratchPad.record [] - test_class = Class.new do - def inspect - ScratchPad << :inspect_called - "<inspect>" + ruby_version_is ""..."3.3" do + it "calls receiver.inspect only when calling Exception#message" do + ScratchPad.record [] + test_class = Class.new do + def 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 - 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 + + ruby_version_is "3.3" do + it "does not call receiver.inspect even when calling Exception#message" do + ScratchPad.record [] + test_class = Class.new do + def 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 == [] + end end end @@ -108,14 +131,14 @@ describe "NoMethodError#message" do begin klass.foo 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 mod = Module.new { def self.name; "MyModule"; end } begin mod.foo 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 |