summaryrefslogtreecommitdiff
path: root/spec/ruby/core/method/shared/to_s.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/method/shared/to_s.rb')
-rw-r--r--spec/ruby/core/method/shared/to_s.rb33
1 files changed, 28 insertions, 5 deletions
diff --git a/spec/ruby/core/method/shared/to_s.rb b/spec/ruby/core/method/shared/to_s.rb
index 0c0edc2f8c..1fbee870d6 100644
--- a/spec/ruby/core/method/shared/to_s.rb
+++ b/spec/ruby/core/method/shared/to_s.rb
@@ -4,7 +4,7 @@ require_relative '../fixtures/classes'
describe :method_to_s, shared: true do
before :each do
@m = MethodSpecs::MySub.new.method :bar
- @string = @m.send(@method).sub(/0x\w+/, '0xXXXXXX')
+ @string = @m.send(@method)
end
it "returns a String" do
@@ -24,6 +24,21 @@ describe :method_to_s, shared: true do
@string.should =~ /\#bar/
end
+ ruby_version_is "2.7" do
+ it "returns a String containing method arguments" do
+ obj = MethodSpecs::Methods.new
+ obj.method(:zero).send(@method).should.include?("()")
+ obj.method(:one_req).send(@method).should.include?("(a)")
+ obj.method(:one_req_named).send(@method).should.include?("(a:)")
+ obj.method(:zero_with_block).send(@method).should.include?("(&blk)")
+ obj.method(:one_opt).send(@method).should.include?("(a=...)")
+ obj.method(:one_opt_named).send(@method).should.include?("(a: ...)")
+ obj.method(:zero_with_splat).send(@method).should.include?("(*a)")
+ obj.method(:zero_with_double_splat).send(@method).should.include?("(**a)")
+ obj.method(:one_req_one_opt_with_splat_and_block).send(@method).should.include?("(a, b=..., *c, &blk)")
+ end
+ end
+
it "returns a String containing the Module the method is defined in" do
@string.should =~ /MethodSpecs::MyMod/
end
@@ -32,13 +47,21 @@ describe :method_to_s, shared: true do
@string.should =~ /MethodSpecs::MySub/
end
+ it "returns a String including all details" do
+ @string.should.start_with? "#<Method: MethodSpecs::MySub(MethodSpecs::MyMod)#bar"
+ end
+
+ it "does not show the defining module if it is the same as the receiver class" do
+ MethodSpecs::A.new.method(:baz).send(@method).should.start_with? "#<Method: MethodSpecs::A#baz"
+ end
+
ruby_version_is '3.0' do
it "returns a String containing the Module containing the method if object has a singleton class but method is not defined in the singleton class" do
obj = MethodSpecs::MySub.new
obj.singleton_class
@m = obj.method(:bar)
- @string = @m.send(@method).sub(/0x\w+/, '0xXXXXXX')
- @string.should =~ /\A#<Method: MethodSpecs::MySub\(MethodSpecs::MyMod\)#bar\(\) /
+ @string = @m.send(@method)
+ @string.should.start_with? "#<Method: MethodSpecs::MySub(MethodSpecs::MyMod)#bar"
end
end
@@ -46,7 +69,7 @@ describe :method_to_s, shared: true do
obj = MethodSpecs::MySub.new
def obj.bar; end
@m = obj.method(:bar)
- @string = @m.send(@method).sub(/0x\w+/, '0xXXXXXX')
- @string.should =~ /\A#<Method: #<MethodSpecs::MySub:0xXXXXXX>\.bar/
+ @string = @m.send(@method).sub(/0x\h+/, '0xXXXXXX')
+ @string.should.start_with? "#<Method: #<MethodSpecs::MySub:0xXXXXXX>.bar"
end
end