8000 Support `ivar_set` TracePoint event by st0012 · Pull Request #13369 · ruby/ruby · GitHub
[go: up one dir, main page]

Skip to content

Support ivar_set TracePoint event #13369

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 10 commits into
base: master
Choose a base branch
from
Prev Previous commit
Next Next commit
Update tests
  • Loading branch information
st0012 committed Jun 6, 2025
commit ec7353d8d220f0873aa7c948d0f0c0b9ed8d3589
16 changes: 8 additions & 8 deletions test/ruby/test_settracefunc.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2964,13 +2964,13 @@ def test_tracepoint_ivar_set_via_direct_assignment
line_2 = nil

TracePoint.new(:ivar_set) do |tp|
events << [tp.event, tp.self, tp.lineno]
events << [tp.event, tp.ivar_name, tp.return_value, tp.lineno]
end.enable do
@a = 1; line_1 = __LINE__
@a = 2; line_2 = __LINE__
end

assert_equal([[:ivar_set, self, line_1], [:ivar_set, self, line_2]], events)
assert_equal([[:ivar_set, :@a, 1, line_1], [:ivar_set, :@a, 2, line_2]], events)
end

def test_tracepoint_ivar_set_via_attr_writer
Expand All @@ -2984,26 +2984,26 @@ def test_tracepoint_ivar_set_via_attr_writer
f = foo_class.new

TracePoint.new(:ivar_set) do |tp|
events << [tp.event, tp.self, tp.lineno]
events << [tp.event, tp.ivar_name, tp.return_value, tp.lineno]
end.enable do
f.a = 1; line_1 = __LINE__
f.a = 2; line_2 = __LINE__
end

assert_equal([[:ivar_set, f, line_1], [:ivar_set, f, line_2]], events)
assert_equal([[:ivar_set, :@a, 1, line_1], [:ivar_set, :@a, 2, line_2]], events)
end

def test_tracepoint_ivar_set_via_instance_variable_set
events = []
line = nil

TracePoint.new(:ivar_set) do |tp|
events << [tp.event, tp.self, tp.lineno]
events << [tp.event, tp.ivar_name, tp.return_value, tp.lineno]
end.enable do
self.instance_variable_set(:@a, 1); line = __LINE__
end

assert_equal([[:ivar_set, self, line]], events)
assert_equal([[:ivar_set, :@a, 1, line]], events)
end

def test_tracepoint_ivar_set_via_instance_variable_set_isnt_triggered_recursively
Expand All @@ -3012,13 +3012,13 @@ def test_tracepoint_ivar_set_via_instance_variable_set_isnt_triggered_recursivel
line_2 = nil

TracePoint.new(:ivar_set) do |tp|
events << [tp.event, tp.self, tp.lineno]
events << [tp.event, tp.ivar_name, tp.return_value, tp.lineno]
self.instance_variable_set(:@not_this, 1)
end.enable do
self.instance_variable_set(:@a, 1); line_1 = __LINE__
self.instance_variable_set(:@a, 2); line_2 = __LINE__
end

assert_equal([[:ivar_set, self, line_1], [:ivar_set, self, line_2]], events)
assert_equal([[:ivar_set, :@a, 1, line_1], [:ivar_set, :@a, 2, line_2]], events)
end
end
0