summaryrefslogtreecommitdiff
path: root/spec/ruby/optional/capi/debug_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/optional/capi/debug_spec.rb')
-rw-r--r--spec/ruby/optional/capi/debug_spec.rb24
1 files changed, 16 insertions, 8 deletions
diff --git a/spec/ruby/optional/capi/debug_spec.rb b/spec/ruby/optional/capi/debug_spec.rb
index c8c91417d1..547b24cfcc 100644
--- a/spec/ruby/optional/capi/debug_spec.rb
+++ b/spec/ruby/optional/capi/debug_spec.rb
@@ -9,7 +9,7 @@ describe "C-API Debug function" do
describe "rb_debug_inspector_open" do
it "creates a debug context and calls the given callback" do
- @o.rb_debug_inspector_open(42).should be_kind_of(Array)
+ @o.rb_debug_inspector_open(42).should.is_a?(Array)
@o.debug_spec_callback_data.should == 42
end
end
@@ -17,6 +17,7 @@ describe "C-API Debug function" do
describe "rb_debug_inspector_frame_self_get" do
it "returns self" do
@o.rb_debug_inspector_frame_self_get(0).should == @o
+ @o.rb_debug_inspector_frame_self_get(1).should == self
end
end
@@ -30,15 +31,22 @@ describe "C-API Debug function" do
it "returns the current binding" do
a = "test"
b = @o.rb_debug_inspector_frame_binding_get(1)
- b.should be_an_instance_of(Binding)
+ b.should.instance_of?(Binding)
b.local_variable_get(:a).should == "test"
end
it "matches the locations in rb_debug_inspector_backtrace_locations" do
- frames = @o.rb_debug_inspector_open(42);
- frames.each do |_s, _klass, binding, _iseq, backtrace_location|
+ frames = @o.rb_debug_inspector_open(42)
+ frames.each do |_s, klass, binding, iseq, backtrace_location|
if binding
- "#{backtrace_location.path}:#{backtrace_location.lineno}".should == "#{binding.source_location[0]}:#{binding.source_location[1]}"
+ # YJIT modifies Array#each backtraces but leaves its source_location as is
+ unless defined?(RubyVM::YJIT) && klass == Array && iseq.label == "each"
+ binding.source_location.should == [backtrace_location.path, backtrace_location.lineno]
+ end
+ method_name = binding.eval('__method__')
+ if method_name
+ method_name.should == backtrace_location.base_label.to_sym
+ end
end
end
end
@@ -47,7 +55,7 @@ describe "C-API Debug function" do
describe "rb_debug_inspector_frame_iseq_get" do
it "returns an InstructionSequence" do
if defined?(RubyVM::InstructionSequence)
- @o.rb_debug_inspector_frame_iseq_get(1).should be_an_instance_of(RubyVM::InstructionSequence)
+ @o.rb_debug_inspector_frame_iseq_get(1).should.instance_of?(RubyVM::InstructionSequence)
else
@o.rb_debug_inspector_frame_iseq_get(1).should == nil
end
@@ -58,9 +66,9 @@ describe "C-API Debug function" do
it "returns an array of Thread::Backtrace::Location" do
bts = @o.rb_debug_inspector_backtrace_locations
bts.should_not.empty?
- bts.each { |bt| bt.should be_kind_of(Thread::Backtrace::Location) }
+ bts.each { |bt| bt.should.is_a?(Thread::Backtrace::Location) }
location = "#{__FILE__}:#{__LINE__ - 3}"
- bts[1].to_s.should include(location)
+ bts[1].to_s.should.include?(location)
end
end
end