aboutsummaryrefslogtreecommitdiffstats
path: root/spec/ruby/core
diff options
context:
space:
mode:
authorYusuke Endoh <mame@ruby-lang.org>2023-01-24 17:44:14 +0900
committerYusuke Endoh <mame@ruby-lang.org>2023-02-20 10:33:06 +0900
commit0e830e6373b334a806dddb57c13f233674bd0054 (patch)
tree28e490e393a144129d9fb8e43e10b704f4b93c98 /spec/ruby/core
parent8f868a1a65383359e565ed0c874e0d2cba95b0ee (diff)
downloadruby-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.rb57
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