diff options
Diffstat (limited to 'spec/ruby/core/tracepoint')
-rw-r--r-- | spec/ruby/core/tracepoint/allow_reentry_spec.rb | 32 | ||||
-rw-r--r-- | spec/ruby/core/tracepoint/enable_spec.rb | 607 | ||||
-rw-r--r-- | spec/ruby/core/tracepoint/eval_script_spec.rb | 30 | ||||
-rw-r--r-- | spec/ruby/core/tracepoint/inspect_spec.rb | 35 | ||||
-rw-r--r-- | spec/ruby/core/tracepoint/parameters_spec.rb | 42 | ||||
-rw-r--r-- | spec/ruby/core/tracepoint/path_spec.rb | 31 |
6 files changed, 420 insertions, 357 deletions
diff --git a/spec/ruby/core/tracepoint/allow_reentry_spec.rb b/spec/ruby/core/tracepoint/allow_reentry_spec.rb new file mode 100644 index 0000000000..6bff1bed76 --- /dev/null +++ b/spec/ruby/core/tracepoint/allow_reentry_spec.rb @@ -0,0 +1,32 @@ +require_relative '../../spec_helper' +require_relative 'fixtures/classes' + +ruby_version_is "3.1" do + describe 'TracePoint.allow_reentry' do + it 'allows the reentrance in a given block' do + event_lines = [] + l1 = l2 = l3 = l4 = nil + TracePoint.new(:line) do |tp| + next unless TracePointSpec.target_thread? + + event_lines << tp.lineno + next if (__LINE__ + 2 .. __LINE__ + 4).cover?(tp.lineno) + TracePoint.allow_reentry do + a = 1; l3 = __LINE__ + b = 2; l4 = __LINE__ + end + end.enable do + c = 3; l1 = __LINE__ + d = 4; l2 = __LINE__ + end + + event_lines.should == [l1, l3, l4, l2, l3, l4] + end + + it 'raises RuntimeError when not called inside a TracePoint' do + -> { + TracePoint.allow_reentry{} + }.should raise_error(RuntimeError) + end + end +end diff --git a/spec/ruby/core/tracepoint/enable_spec.rb b/spec/ruby/core/tracepoint/enable_spec.rb index 50fded90e4..6cc8bb3897 100644 --- a/spec/ruby/core/tracepoint/enable_spec.rb +++ b/spec/ruby/core/tracepoint/enable_spec.rb @@ -57,25 +57,50 @@ describe 'TracePoint#enable' do end.enable { event_name.should equal(:line) } end - it 'enables the trace object for any thread' do - threads = [] - trace = TracePoint.new(:line) do |tp| - # Runs on purpose on any Thread - threads << Thread.current - end + ruby_version_is '3.2' do + it 'enables the trace object only for the current thread' do + threads = [] + trace = TracePoint.new(:line) do |tp| + # Runs on purpose on any Thread + threads << Thread.current + end - thread = nil - trace.enable do - line_event = true - thread = Thread.new do - event_in_other_thread = true + thread = nil + trace.enable do + line_event = true + thread = Thread.new do + event_in_other_thread = true + end + thread.join end - thread.join + + threads = threads.uniq + threads.should.include?(Thread.current) + threads.should_not.include?(thread) end + end + + ruby_version_is ''...'3.2' do + it 'enables the trace object for any thread' do + threads = [] + trace = TracePoint.new(:line) do |tp| + # Runs on purpose on any Thread + threads << Thread.current + end + + thread = nil + trace.enable do + line_event = true + thread = Thread.new do + event_in_other_thread = true + end + thread.join + end - threads = threads.uniq - threads.should.include?(Thread.current) - threads.should.include?(thread) + threads = threads.uniq + threads.should.include?(Thread.current) + threads.should.include?(thread) + end end it 'can accept arguments within a block but it should not yield arguments' do @@ -124,13 +149,7 @@ describe 'TracePoint#enable' do describe "when nested" do before do - ruby_version_is ""..."3.0" do - @path_prefix = '@' - end - - ruby_version_is "3.0" do - @path_prefix = ' ' - end + @path_prefix = ' ' end it "enables both TracePoints but only calls the respective callbacks" do @@ -161,65 +180,112 @@ describe 'TracePoint#enable' do end end - ruby_version_is "2.6" do - describe 'target: option' do - before :each do - ScratchPad.record [] + describe 'target: option' do + before :each do + ScratchPad.record [] + end + + it 'enables trace point for specific location' do + trace = TracePoint.new(:call) do |tp| + next unless TracePointSpec.target_thread? + ScratchPad << tp.method_id end - it 'enables trace point for specific location' do - trace = TracePoint.new(:call) do |tp| - next unless TracePointSpec.target_thread? - ScratchPad << tp.method_id - end + obj = Object.new + def obj.foo; end + def obj.bar; end - obj = Object.new - def obj.foo; end - def obj.bar; end + trace.enable(target: obj.method(:foo)) do + obj.foo + obj.bar + end - trace.enable(target: obj.method(:foo)) do - obj.foo - obj.bar - end + ScratchPad.recorded.should == [:foo] + end - ScratchPad.recorded.should == [:foo] + it 'traces all the events triggered in specified location' do + trace = TracePoint.new(:line, :call, :return, :b_call, :b_return) do |tp| + next unless TracePointSpec.target_thread? + ScratchPad << tp.event end - it 'traces all the events triggered in specified location' do - trace = TracePoint.new(:line, :call, :return, :b_call, :b_return) do |tp| - next unless TracePointSpec.target_thread? - ScratchPad << tp.event - end + obj = Object.new + def obj.foo + bar + -> {}.call + end + def obj.bar; end - obj = Object.new - def obj.foo - bar - -> {}.call + trace.enable(target: obj.method(:foo)) do + obj.foo + end + + ScratchPad.recorded.uniq.sort.should == [:call, :return, :b_call, :b_return, :line].sort + end + + it 'does not trace events in nested locations' do + trace = TracePoint.new(:call) do |tp| + next unless TracePointSpec.target_thread? + ScratchPad << tp.method_id + end + + obj = Object.new + def obj.foo + bar + end + def obj.bar + baz + end + def obj.baz + end + + trace.enable(target: obj.method(:foo)) do + obj.foo + end + + ScratchPad.recorded.should == [:foo] + end + + it "traces some events in nested blocks" do + klass = Class.new do + def foo + 1.times do + 1.times do + bar do + end + end + end end - def obj.bar; end - trace.enable(target: obj.method(:foo)) do - obj.foo + def bar(&blk) + blk.call end + end + + trace = TracePoint.new(:b_call) do |tp| + next unless TracePointSpec.target_thread? + ScratchPad << tp.lineno + end - ScratchPad.recorded.uniq.sort.should == [:call, :return, :b_call, :b_return, :line].sort + obj = klass.new + _, lineno = obj.method(:foo).source_location + + trace.enable(target: obj.method(:foo)) do + obj.foo end - it 'does not trace events in nested locations' do + ScratchPad.recorded.should == (lineno+1..lineno+3).to_a + end + + describe 'option value' do + it 'accepts Method' do trace = TracePoint.new(:call) do |tp| next unless TracePointSpec.target_thread? ScratchPad << tp.method_id end obj = Object.new - def obj.foo - bar - end - def obj.bar - baz - end - def obj.baz - end + def obj.foo; end trace.enable(target: obj.method(:foo)) do obj.foo @@ -228,324 +294,275 @@ describe 'TracePoint#enable' do ScratchPad.recorded.should == [:foo] end - it "traces some events in nested blocks" do + it 'accepts UnboundMethod' do + trace = TracePoint.new(:call) do |tp| + next unless TracePointSpec.target_thread? + ScratchPad << tp.method_id + end + klass = Class.new do - def foo - 1.times do - 1.times do - bar do - end - end - end - end + def foo; end + end - def bar(&blk) - blk.call - end + unbound_method = klass.instance_method(:foo) + trace.enable(target: unbound_method) do + klass.new.foo end + ScratchPad.recorded.should == [:foo] + end + + it 'accepts Proc' do trace = TracePoint.new(:b_call) do |tp| next unless TracePointSpec.target_thread? ScratchPad << tp.lineno end - obj = klass.new - _, lineno = obj.method(:foo).source_location + block = proc {} + _, lineno = block.source_location - trace.enable(target: obj.method(:foo)) do - obj.foo + trace.enable(target: block) do + block.call end - ScratchPad.recorded.should == (lineno+1..lineno+3).to_a + ScratchPad.recorded.should == [lineno] + lineno.should be_kind_of(Integer) end + end - describe 'option value' do - it 'accepts Method' do - trace = TracePoint.new(:call) do |tp| - next unless TracePointSpec.target_thread? - ScratchPad << tp.method_id - end - - obj = Object.new - def obj.foo; end + it "raises ArgumentError if target object cannot trigger specified event" do + trace = TracePoint.new(:call) do |tp| + next unless TracePointSpec.target_thread? + ScratchPad << tp.method_id + end - trace.enable(target: obj.method(:foo)) do - obj.foo - end + block = proc {} - ScratchPad.recorded.should == [:foo] + -> { + trace.enable(target: block) do + block.call # triggers :b_call and :b_return events end + }.should raise_error(ArgumentError, /can not enable any hooks/) + end - it 'accepts UnboundMethod' do - trace = TracePoint.new(:call) do |tp| - next unless TracePointSpec.target_thread? - ScratchPad << tp.method_id - end - - klass = Class.new do - def foo; end - end + it "raises ArgumentError if passed not Method/UnboundMethod/Proc" do + trace = TracePoint.new(:call) {} - unbound_method = klass.instance_method(:foo) - trace.enable(target: unbound_method) do - klass.new.foo - end - - ScratchPad.recorded.should == [:foo] + -> { + trace.enable(target: Object.new) do end + }.should raise_error(ArgumentError, /specified target is not supported/) + end + + context "nested enabling and disabling" do + it "raises ArgumentError if trace point already enabled with target is re-enabled with target" do + trace = TracePoint.new(:b_call) {} - it 'accepts Proc' do - trace = TracePoint.new(:b_call) do |tp| - next unless TracePointSpec.target_thread? - ScratchPad << tp.lineno + -> { + trace.enable(target: -> {}) do + trace.enable(target: -> {}) do + end end + }.should raise_error(ArgumentError, /can't nest-enable a targett?ing TracePoint/) + end - block = proc {} - _, lineno = block.source_location + it "raises ArgumentError if trace point already enabled without target is re-enabled with target" do + trace = TracePoint.new(:b_call) {} - trace.enable(target: block) do - block.call + -> { + trace.enable do + trace.enable(target: -> {}) do + end end - - ScratchPad.recorded.should == [lineno] - lineno.should be_kind_of(Integer) - end + }.should raise_error(ArgumentError, /can't nest-enable a targett?ing TracePoint/) end - it "raises ArgumentError if target object cannot trigger specified event" do - trace = TracePoint.new(:call) do |tp| - next unless TracePointSpec.target_thread? - ScratchPad << tp.method_id - end - - block = proc {} + it "raises ArgumentError if trace point already enabled with target is re-enabled without target" do + trace = TracePoint.new(:b_call) {} -> { - trace.enable(target: block) do - block.call # triggers :b_call and :b_return events + trace.enable(target: -> {}) do + trace.enable do + end end - }.should raise_error(ArgumentError, /can not enable any hooks/) + }.should raise_error(ArgumentError, /can't nest-enable a targett?ing TracePoint/) end - it "raises ArgumentError if passed not Method/UnboundMethod/Proc" do - trace = TracePoint.new(:call) {} + it "raises ArgumentError if trace point already enabled with target is disabled with block" do + trace = TracePoint.new(:b_call) {} -> { - trace.enable(target: Object.new) do + trace.enable(target: -> {}) do + trace.disable do + end end - }.should raise_error(ArgumentError, /specified target is not supported/) + }.should raise_error(ArgumentError, /can't disable a targett?ing TracePoint in a block/) end - context "nested enabling and disabling" do - it "raises ArgumentError if trace point already enabled with target is re-enabled with target" do - trace = TracePoint.new(:b_call) {} + it "traces events when trace point with target is enabled in another trace point enabled without target" do + trace_outer = TracePoint.new(:b_call) do |tp| + next unless TracePointSpec.target_thread? + ScratchPad << :outer + end - -> { - trace.enable(target: -> {}) do - trace.enable(target: -> {}) do - end - end - }.should raise_error(ArgumentError, /can't nest-enable a targett?ing TracePoint/) + trace_inner = TracePoint.new(:b_call) do |tp| + next unless TracePointSpec.target_thread? + ScratchPad << :inner end - it "raises ArgumentError if trace point already enabled without target is re-enabled with target" do - trace = TracePoint.new(:b_call) {} + target = -> {} - -> { - trace.enable do - trace.enable(target: -> {}) do - end - end - }.should raise_error(ArgumentError, /can't nest-enable a targett?ing TracePoint/) + trace_outer.enable do + trace_inner.enable(target: target) do + target.call + end end - it "raises ArgumentError if trace point already enabled with target is re-enabled without target" do - trace = TracePoint.new(:b_call) {} + ScratchPad.recorded.should == [:outer, :outer, :outer, :inner] + end - -> { - trace.enable(target: -> {}) do - trace.enable do - end - end - }.should raise_error(ArgumentError, /can't nest-enable a targett?ing TracePoint/) + it "traces events when trace point with target is enabled in another trace point enabled with target" do + trace_outer = TracePoint.new(:b_call) do |tp| + next unless TracePointSpec.target_thread? + ScratchPad << :outer end - it "raises ArgumentError if trace point already enabled with target is disabled with block" do - trace = TracePoint.new(:b_call) {} - - -> { - trace.enable(target: -> {}) do - trace.disable do - end - end - }.should raise_error(ArgumentError, /can't disable a targett?ing TracePoint in a block/) + trace_inner = TracePoint.new(:b_call) do |tp| + next unless TracePointSpec.target_thread? + ScratchPad << :inner end - it "traces events when trace point with target is enabled in another trace point enabled without target" do - trace_outer = TracePoint.new(:b_call) do |tp| - next unless TracePointSpec.target_thread? - ScratchPad << :outer - end + target = -> {} - trace_inner = TracePoint.new(:b_call) do |tp| - next unless TracePointSpec.target_thread? - ScratchPad << :inner + trace_outer.enable(target: target) do + trace_inner.enable(target: target) do + target.call end + end - target = -> {} - - trace_outer.enable do - trace_inner.enable(target: target) do - target.call - end - end + ScratchPad.recorded.should == [:inner, :outer] + end - ScratchPad.recorded.should == [:outer, :outer, :outer, :inner] + it "traces events when trace point without target is enabled in another trace point enabled with target" do + trace_outer = TracePoint.new(:b_call) do |tp| + next unless TracePointSpec.target_thread? + ScratchPad << :outer end - it "traces events when trace point with target is enabled in another trace point enabled with target" do - trace_outer = TracePoint.new(:b_call) do |tp| - next unless TracePointSpec.target_thread? - ScratchPad << :outer - end - - trace_inner = TracePoint.new(:b_call) do |tp| - next unless TracePointSpec.target_thread? - ScratchPad << :inner - end + trace_inner = TracePoint.new(:b_call) do |tp| + next unless TracePointSpec.target_thread? + ScratchPad << :inner + end - target = -> {} + target = -> {} - trace_outer.enable(target: target) do - trace_inner.enable(target: target) do - target.call - end + trace_outer.enable(target: target) do + trace_inner.enable do + target.call end - - ScratchPad.recorded.should == [:inner, :outer] end - it "traces events when trace point without target is enabled in another trace point enabled with target" do - trace_outer = TracePoint.new(:b_call) do |tp| - next unless TracePointSpec.target_thread? - ScratchPad << :outer - end + ScratchPad.recorded.should == [:inner, :inner, :outer] + end + end + end - trace_inner = TracePoint.new(:b_call) do |tp| - next unless TracePointSpec.target_thread? - ScratchPad << :inner - end + describe 'target_line: option' do + before :each do + ScratchPad.record [] + end - target = -> {} + it "traces :line events only on specified line of code" do + trace = TracePoint.new(:line) do |tp| + next unless TracePointSpec.target_thread? + ScratchPad << tp.lineno + end - trace_outer.enable(target: target) do - trace_inner.enable do - target.call - end - end + target = -> { + x = 1 + y = 2 # <= this line is target + z = x + y + } + _, lineno = target.source_location + target_line = lineno + 2 - ScratchPad.recorded.should == [:inner, :inner, :outer] - end + trace.enable(target_line: target_line, target: target) do + target.call end + + ScratchPad.recorded.should == [target_line] end - describe 'target_line: option' do - before :each do - ScratchPad.record [] - end + it "raises ArgumentError if :target option isn't specified" do + trace = TracePoint.new(:line) {} - it "traces :line events only on specified line of code" do - trace = TracePoint.new(:line) do |tp| - next unless TracePointSpec.target_thread? - ScratchPad << tp.lineno + -> { + trace.enable(target_line: 67) do end + }.should raise_error(ArgumentError, /only target_line is specified/) + end + + it "raises ArgumentError if :line event isn't registered" do + trace = TracePoint.new(:call) {} - target = -> { - x = 1 - y = 2 # <= this line is target - z = x + y - } - _, lineno = target.source_location - target_line = lineno + 2 + target = -> { + x = 1 + y = 2 # <= this line is target + z = x + y + } + _, lineno = target.source_location + target_line = lineno + 2 + -> { trace.enable(target_line: target_line, target: target) do - target.call end + }.should raise_error(ArgumentError, /target_line is specified, but line event is not specified/) + end - ScratchPad.recorded.should == [target_line] - end - - it "raises ArgumentError if :target option isn't specified" do - trace = TracePoint.new(:line) {} - - -> { - trace.enable(target_line: 67) do - end - }.should raise_error(ArgumentError, /only target_line is specified/) - end - - it "raises ArgumentError if :line event isn't registered" do - trace = TracePoint.new(:call) {} + it "raises ArgumentError if :target_line value is out of target code lines range" do + trace = TracePoint.new(:line) {} - target = -> { - x = 1 - y = 2 # <= this line is target - z = x + y - } - _, lineno = target.source_location - target_line = lineno + 2 + -> { + trace.enable(target_line: 1, target: -> { }) do + end + }.should raise_error(ArgumentError, /can not enable any hooks/) + end - -> { - trace.enable(target_line: target_line, target: target) do - end - }.should raise_error(ArgumentError, /target_line is specified, but line event is not specified/) - end + it "raises TypeError if :target_line value couldn't be coerced to Integer" do + trace = TracePoint.new(:line) {} - it "raises ArgumentError if :target_line value is out of target code lines range" do - trace = TracePoint.new(:line) {} + -> { + trace.enable(target_line: Object.new, target: -> { }) do + end + }.should raise_error(TypeError, /no implicit conversion of \w+? into Integer/) + end - -> { - trace.enable(target_line: 1, target: -> { }) do - end - }.should raise_error(ArgumentError, /can not enable any hooks/) - end + it "raises ArgumentError if :target_line value is negative" do + trace = TracePoint.new(:line) {} - it "raises TypeError if :target_line value couldn't be coerced to Integer" do - trace = TracePoint.new(:line) {} + -> { + trace.enable(target_line: -2, target: -> { }) do + end + }.should raise_error(ArgumentError, /can not enable any hooks/) + end - -> { - trace.enable(target_line: Object.new, target: -> { }) do - end - }.should raise_error(TypeError, /no implicit conversion of \w+? into Integer/) + it "accepts value that could be coerced to Integer" do + trace = TracePoint.new(:line) do |tp| + next unless TracePointSpec.target_thread? + ScratchPad << tp.lineno end - it "raises ArgumentError if :target_line value is negative" do - trace = TracePoint.new(:line) {} + target = -> { + x = 1 # <= this line is target + } + _, lineno = target.source_location + target_line = lineno + 1 - -> { - trace.enable(target_line: -2, target: -> { }) do - end - }.should raise_error(ArgumentError, /can not enable any hooks/) + trace.enable(target_line: target_line.to_r, target: target) do + target.call end - it "accepts value that could be coerced to Integer" do - trace = TracePoint.new(:line) do |tp| - next unless TracePointSpec.target_thread? - ScratchPad << tp.lineno - end - - target = -> { - x = 1 # <= this line is target - } - _, lineno = target.source_location - target_line = lineno + 1 - - trace.enable(target_line: target_line.to_r, target: target) do - target.call - end - - ScratchPad.recorded.should == [target_line] - end + ScratchPad.recorded.should == [target_line] end end end diff --git a/spec/ruby/core/tracepoint/eval_script_spec.rb b/spec/ruby/core/tracepoint/eval_script_spec.rb index ccf7fb5975..7ec53e7094 100644 --- a/spec/ruby/core/tracepoint/eval_script_spec.rb +++ b/spec/ruby/core/tracepoint/eval_script_spec.rb @@ -1,25 +1,23 @@ require_relative '../../spec_helper' require_relative 'fixtures/classes' -ruby_version_is "2.6" do - describe "TracePoint#eval_script" do - it "is the evald source code" do - ScratchPad.record [] +describe "TracePoint#eval_script" do + it "is the evald source code" do + ScratchPad.record [] - script = <<-CODE - def foo - p :hello - end - CODE - - TracePoint.new(:script_compiled) do |e| - next unless TracePointSpec.target_thread? - ScratchPad << e.eval_script - end.enable do - eval script + script = <<-CODE + def foo + p :hello end + CODE - ScratchPad.recorded.should == [script] + TracePoint.new(:script_compiled) do |e| + next unless TracePointSpec.target_thread? + ScratchPad << e.eval_script + end.enable do + eval script end + + ScratchPad.recorded.should == [script] end end diff --git a/spec/ruby/core/tracepoint/inspect_spec.rb b/spec/ruby/core/tracepoint/inspect_spec.rb index 06bed9c99a..cc6bf0f842 100644 --- a/spec/ruby/core/tracepoint/inspect_spec.rb +++ b/spec/ruby/core/tracepoint/inspect_spec.rb @@ -3,19 +3,22 @@ require_relative 'fixtures/classes' describe 'TracePoint#inspect' do before do - ruby_version_is ""..."3.0" do - @path_prefix = '@' - end - - ruby_version_is "3.0" do - @path_prefix = ' ' - end + @path_prefix = ' ' end it 'returns a string containing a human-readable TracePoint status' do TracePoint.new(:line) {}.inspect.should == '#<TracePoint:disabled>' end + it "shows only whether it's enabled when outside the TracePoint handler" do + trace = TracePoint.new(:line) {} + trace.enable + + trace.inspect.should == '#<TracePoint:enabled>' + + trace.disable + end + it 'returns a String showing the event, path and line' do inspect = nil line = nil @@ -41,7 +44,7 @@ describe 'TracePoint#inspect' do trace_point_spec_test_call end - inspect.should == "#<TracePoint:call `trace_point_spec_test_call'#{@path_prefix}#{__FILE__}:#{line}>" + inspect.should =~ /\A#<TracePoint:call [`']trace_point_spec_test_call'#{@path_prefix}#{__FILE__}:#{line}>\z/ end it 'returns a String showing the event, method, path and line for a :return event' do @@ -59,21 +62,21 @@ describe 'TracePoint#inspect' do trace_point_spec_test_return end - inspect.should == "#<TracePoint:return `trace_point_spec_test_return'#{@path_prefix}#{__FILE__}:#{line}>" + inspect.should =~ /\A#<TracePoint:return [`']trace_point_spec_test_return'#{@path_prefix}#{__FILE__}:#{line}>\z/ end it 'returns a String showing the event, method, path and line for a :c_call event' do inspect = nil - line = nil - TracePoint.new(:c_call) { |tp| + tracepoint = TracePoint.new(:c_call) { |tp| next unless TracePointSpec.target_thread? inspect ||= tp.inspect - }.enable do - line = __LINE__ + 1 + } + line = __LINE__ + 2 + tracepoint.enable do [0, 1].max end - inspect.should == "#<TracePoint:c_call `max'#{@path_prefix}#{__FILE__}:#{line}>" + inspect.should =~ /\A#<TracePoint:c_call [`']max'#{@path_prefix}#{__FILE__}:#{line}>\z/ end it 'returns a String showing the event, path and line for a :class event' do @@ -98,7 +101,7 @@ describe 'TracePoint#inspect' do TracePoint.new(:thread_begin) { |tp| next unless Thread.current == thread inspect ||= tp.inspect - }.enable do + }.enable(target_thread: nil) do thread = Thread.new {} thread_inspection = thread.inspect thread.join @@ -114,7 +117,7 @@ describe 'TracePoint#inspect' do TracePoint.new(:thread_end) { |tp| next unless Thread.current == thread inspect ||= tp.inspect - }.enable do + }.enable(target_thread: nil) do thread = Thread.new {} thread_inspection = thread.inspect thread.join diff --git a/spec/ruby/core/tracepoint/parameters_spec.rb b/spec/ruby/core/tracepoint/parameters_spec.rb index 3a2cdd7750..82aee3caa4 100644 --- a/spec/ruby/core/tracepoint/parameters_spec.rb +++ b/spec/ruby/core/tracepoint/parameters_spec.rb @@ -1,30 +1,28 @@ require_relative '../../spec_helper' require_relative 'fixtures/classes' -ruby_version_is "2.6" do - describe 'TracePoint#parameters' do - it 'returns the parameters of block' do - f = proc {|x, y, z| } - parameters = nil - TracePoint.new(:b_call) { |tp| - next unless TracePointSpec.target_thread? - parameters = tp.parameters - }.enable do - f.call - parameters.should == [[:opt, :x], [:opt, :y], [:opt, :z]] - end +describe 'TracePoint#parameters' do + it 'returns the parameters of block' do + f = proc {|x, y, z| } + parameters = nil + TracePoint.new(:b_call) { |tp| + next unless TracePointSpec.target_thread? + parameters = tp.parameters + }.enable do + f.call + parameters.should == [[:opt, :x], [:opt, :y], [:opt, :z]] end + end - it 'returns the parameters of lambda block' do - f = -> x, y, z { } - parameters = nil - TracePoint.new(:b_call) { |tp| - next unless TracePointSpec.target_thread? - parameters = tp.parameters - }.enable do - f.call(1, 2, 3) - parameters.should == [[:req, :x], [:req, :y], [:req, :z]] - end + it 'returns the parameters of lambda block' do + f = -> x, y, z { } + parameters = nil + TracePoint.new(:b_call) { |tp| + next unless TracePointSpec.target_thread? + parameters = tp.parameters + }.enable do + f.call(1, 2, 3) + parameters.should == [[:req, :x], [:req, :y], [:req, :z]] end end end diff --git a/spec/ruby/core/tracepoint/path_spec.rb b/spec/ruby/core/tracepoint/path_spec.rb index 5b6c6d4cfc..dc2ca840b8 100644 --- a/spec/ruby/core/tracepoint/path_spec.rb +++ b/spec/ruby/core/tracepoint/path_spec.rb @@ -13,14 +13,29 @@ describe 'TracePoint#path' do path.should == "#{__FILE__}" end - it 'equals (eval) inside an eval for :end event' do - path = nil - TracePoint.new(:end) { |tp| - next unless TracePointSpec.target_thread? - path = tp.path - }.enable do - eval("module TracePointSpec; end") + ruby_version_is ""..."3.3" do + it 'equals (eval) inside an eval for :end event' do + path = nil + TracePoint.new(:end) { |tp| + next unless TracePointSpec.target_thread? + path = tp.path + }.enable do + eval("module TracePointSpec; end") + end + path.should == '(eval)' + end + end + + ruby_version_is "3.3" do + it 'equals "(eval at __FILE__:__LINE__)" inside an eval for :end event' do + path = nil + TracePoint.new(:end) { |tp| + next unless TracePointSpec.target_thread? + path = tp.path + }.enable do + eval("module TracePointSpec; end") + end + path.should == "(eval at #{__FILE__}:#{__LINE__ - 2})" end - path.should == '(eval)' end end |