1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/spec/ruby/optional/capi/binding_spec.rb
Jeremy Evans 0b091fdac6
Raise RuntimeError if Kernel#binding is called from a non-Ruby frame
Check whether the current or previous frame is a Ruby frame in
call_trace_func and rb_tracearg_binding before attempting to
create a binding for the frame.

Fixes [Bug #18487]

Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
2022-04-06 19:14:03 -07:00

28 lines
626 B
Ruby

require_relative 'spec_helper'
load_extension("binding")
describe "CApiBindingSpecs" do
before :each do
@b = CApiBindingSpecs.new
end
describe "Kernel#binding" do
ruby_version_is '3.2' do
it "raises when called from C" do
foo = 14
-> { @b.get_binding }.should raise_error(RuntimeError)
end
end
ruby_version_is ''...'3.2' do
it "gives the top-most Ruby binding when called from C" do
foo = 14
b = @b.get_binding
b.local_variable_get(:foo).should == 14
b.local_variable_set :foo, 12
foo.should == 12
end
end
end
end