Skip to content

Commit

Permalink
Add more specs for Kernel#caller with a Range argument
Browse files Browse the repository at this point in the history
These have been copied from the specs of Kernel#caller_locations
  • Loading branch information
herwinw committed Jan 2, 2024
1 parent 555b3cc commit ca13aaa
Showing 1 changed file with 30 additions and 2 deletions.
32 changes: 30 additions & 2 deletions core/kernel/caller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,44 @@
]
end

it "can be called with a range" do
locations1 = caller(0)
locations2 = caller(2..4)
locations1[2..4].should == locations2
end

it "works with endless ranges" do
locations1 = KernelSpecs::CallerTest.locations(0)
locations2 = KernelSpecs::CallerTest.locations(eval("(2..)"))
locations2.map(&:to_s).should == locations1[2..-1].map(&:to_s)
locations2.should == locations1[2..-1]
end

it "works with beginless ranges" do
locations1 = KernelSpecs::CallerTest.locations(0)
locations2 = KernelSpecs::CallerTest.locations((..5))
locations2.map(&:to_s)[eval("(2..)")].should == locations1[(..5)].map(&:to_s)[eval("(2..)")]
locations2[eval("(2..)")].should == locations1[(..5)][eval("(2..)")]
end

it "can be called with a range whose end is negative" do
locations1 = caller(0)
locations2 = caller(2..-1)
locations3 = caller(2..-2)
locations1[2..-1].should == locations2
locations1[2..-2].should == locations3
end

it "must return nil if omitting more locations than available" do
caller(100).should == nil
caller(100..-1).should == nil
end

it "must return [] if omitting exactly the number of locations available" do
omit = caller(0).length
caller(omit).should == []
end

it "must return the same locations when called with 1..-1 and when called with no arguments" do
caller.should == caller(1..-1)
end

guard -> { Kernel.instance_method(:tap).source_location } do
Expand Down

0 comments on commit ca13aaa

Please sign in to comment.