summaryrefslogtreecommitdiff
path: root/spec/ruby/core/tracepoint
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/tracepoint')
-rw-r--r--spec/ruby/core/tracepoint/allow_reentry_spec.rb30
-rw-r--r--spec/ruby/core/tracepoint/binding_spec.rb4
-rw-r--r--spec/ruby/core/tracepoint/callee_id_spec.rb1
-rw-r--r--spec/ruby/core/tracepoint/defined_class_spec.rb11
-rw-r--r--spec/ruby/core/tracepoint/disable_spec.rb9
-rw-r--r--spec/ruby/core/tracepoint/enable_spec.rb631
-rw-r--r--spec/ruby/core/tracepoint/enabled_spec.rb5
-rw-r--r--spec/ruby/core/tracepoint/eval_script_spec.rb29
-rw-r--r--spec/ruby/core/tracepoint/event_spec.rb7
-rw-r--r--spec/ruby/core/tracepoint/fixtures/classes.rb6
-rw-r--r--spec/ruby/core/tracepoint/inspect_spec.rb129
-rw-r--r--spec/ruby/core/tracepoint/lineno_spec.rb14
-rw-r--r--spec/ruby/core/tracepoint/method_id_spec.rb12
-rw-r--r--spec/ruby/core/tracepoint/new_spec.rb37
-rw-r--r--spec/ruby/core/tracepoint/parameters_spec.rb37
-rw-r--r--spec/ruby/core/tracepoint/path_spec.rb18
-rw-r--r--spec/ruby/core/tracepoint/raised_exception_spec.rb24
-rw-r--r--spec/ruby/core/tracepoint/return_value_spec.rb6
-rw-r--r--spec/ruby/core/tracepoint/self_spec.rb14
-rw-r--r--spec/ruby/core/tracepoint/trace_spec.rb3
20 files changed, 654 insertions, 373 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..475cca29a9
--- /dev/null
+++ b/spec/ruby/core/tracepoint/allow_reentry_spec.rb
@@ -0,0 +1,30 @@
+require_relative '../../spec_helper'
+require_relative 'fixtures/classes'
+
+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(RuntimeError)
+ end
+end
diff --git a/spec/ruby/core/tracepoint/binding_spec.rb b/spec/ruby/core/tracepoint/binding_spec.rb
index f37753602e..6de6e47d7d 100644
--- a/spec/ruby/core/tracepoint/binding_spec.rb
+++ b/spec/ruby/core/tracepoint/binding_spec.rb
@@ -1,4 +1,5 @@
require_relative '../../spec_helper'
+require_relative 'fixtures/classes'
describe 'TracePoint#binding' do
def test
@@ -8,12 +9,13 @@ describe 'TracePoint#binding' do
it 'return the generated binding object from event' do
bindings = []
TracePoint.new(:return) { |tp|
+ next unless TracePointSpec.target_thread?
bindings << tp.binding
}.enable {
test
}
bindings.size.should == 1
- bindings[0].should be_kind_of(Binding)
+ bindings[0].should.is_a?(Binding)
bindings[0].local_variables.should == [:secret]
end
end
diff --git a/spec/ruby/core/tracepoint/callee_id_spec.rb b/spec/ruby/core/tracepoint/callee_id_spec.rb
index d340290d8b..cc08a45504 100644
--- a/spec/ruby/core/tracepoint/callee_id_spec.rb
+++ b/spec/ruby/core/tracepoint/callee_id_spec.rb
@@ -7,6 +7,7 @@ describe "TracePoint#callee_id" do
obj = TracePointSpec::ClassWithMethodAlias.new
TracePoint.new(:call) do |tp|
+ next unless TracePointSpec.target_thread?
a << tp.callee_id
end.enable do
obj.m_alias
diff --git a/spec/ruby/core/tracepoint/defined_class_spec.rb b/spec/ruby/core/tracepoint/defined_class_spec.rb
index 72536e6a56..53c86a8210 100644
--- a/spec/ruby/core/tracepoint/defined_class_spec.rb
+++ b/spec/ruby/core/tracepoint/defined_class_spec.rb
@@ -5,22 +5,23 @@ describe 'TracePoint#defined_class' do
it 'returns class or module of the method being called' do
last_class_name = nil
TracePoint.new(:call) do |tp|
+ next unless TracePointSpec.target_thread?
last_class_name = tp.defined_class
end.enable do
TracePointSpec::B.new.foo
- last_class_name.should equal(TracePointSpec::B)
+ last_class_name.should.equal?(TracePointSpec::B)
TracePointSpec::B.new.bar
- last_class_name.should equal(TracePointSpec::A)
+ last_class_name.should.equal?(TracePointSpec::A)
c = TracePointSpec::C.new
- last_class_name.should equal(TracePointSpec::C)
+ last_class_name.should.equal?(TracePointSpec::C)
c.foo
- last_class_name.should equal(TracePointSpec::B)
+ last_class_name.should.equal?(TracePointSpec::B)
c.bar
- last_class_name.should equal(TracePointSpec::A)
+ last_class_name.should.equal?(TracePointSpec::A)
end
end
end
diff --git a/spec/ruby/core/tracepoint/disable_spec.rb b/spec/ruby/core/tracepoint/disable_spec.rb
index 612ca3c25a..73a31b3b81 100644
--- a/spec/ruby/core/tracepoint/disable_spec.rb
+++ b/spec/ruby/core/tracepoint/disable_spec.rb
@@ -1,9 +1,11 @@
require_relative '../../spec_helper'
+require_relative 'fixtures/classes'
describe 'TracePoint#disable' do
it 'returns true if trace was enabled' do
called = false
trace = TracePoint.new(:line) do |tp|
+ next unless TracePointSpec.target_thread?
called = true
end
@@ -25,6 +27,7 @@ describe 'TracePoint#disable' do
it 'returns false if trace was disabled' do
called = false
trace = TracePoint.new(:line) do |tp|
+ next unless TracePointSpec.target_thread?
called = true
end
@@ -41,7 +44,7 @@ describe 'TracePoint#disable' do
begin
trace.disable { enabled = trace.enabled? }
enabled.should == false
- trace.enabled?.should == true
+ trace.should.enabled?
ensure
trace.disable
end
@@ -52,7 +55,7 @@ describe 'TracePoint#disable' do
trace.enable
begin
trace.disable { 42 }.should == 42
- trace.enabled?.should == true
+ trace.should.enabled?
ensure
trace.disable
end
@@ -65,7 +68,7 @@ describe 'TracePoint#disable' do
trace.disable do |*args|
args.should == []
end
- trace.enabled?.should == true
+ trace.should.enabled?
ensure
trace.disable
end
diff --git a/spec/ruby/core/tracepoint/enable_spec.rb b/spec/ruby/core/tracepoint/enable_spec.rb
index b0fe38c559..bf61c35154 100644
--- a/spec/ruby/core/tracepoint/enable_spec.rb
+++ b/spec/ruby/core/tracepoint/enable_spec.rb
@@ -1,20 +1,21 @@
require_relative '../../spec_helper'
+require_relative 'fixtures/classes'
describe 'TracePoint#enable' do
- # def test; end
-
describe 'without a block' do
- it 'returns true if trace was enabled' do
+ it 'returns false if trace was disabled' do
called = false
trace = TracePoint.new(:line) do |tp|
+ next unless TracePointSpec.target_thread?
called = true
end
line_event = true
called.should == false
- trace.enable
+ ret = trace.enable
begin
+ ret.should == false
line_event = true
called.should == true
ensure
@@ -22,30 +23,27 @@ describe 'TracePoint#enable' do
end
end
- it 'returns false if trace was disabled' do
+ it 'returns true if trace was already enabled' do
called = false
trace = TracePoint.new(:line) do |tp|
+ next unless TracePointSpec.target_thread?
called = true
end
- trace.enable.should == false
- begin
- line_event = true
- called.should == true
- ensure
- trace.disable
- end
-
- called = false
line_event = true
called.should == false
- trace.enable.should == false
+ ret = trace.enable
begin
+ ret.should == false
+
+ trace.enable.should == true
+
line_event = true
called.should == true
ensure
trace.disable
+ trace.should_not.enabled?
end
end
end
@@ -54,18 +52,43 @@ describe 'TracePoint#enable' do
it 'enables the trace object within a block' do
event_name = nil
TracePoint.new(:line) do |tp|
+ next unless TracePointSpec.target_thread?
event_name = tp.event
- end.enable { event_name.should equal(:line) }
+ end.enable { event_name.should.equal?(:line) }
+ end
+
+ 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
+ end
+ thread.join
+ end
+
+ threads = threads.uniq
+ threads.should.include?(Thread.current)
+ threads.should_not.include?(thread)
end
it 'can accept arguments within a block but it should not yield arguments' do
event_name = nil
- trace = TracePoint.new(:line) { |tp| event_name = tp.event }
+ trace = TracePoint.new(:line) do |tp|
+ next unless TracePointSpec.target_thread?
+ event_name = tp.event
+ end
trace.enable do |*args|
- event_name.should equal(:line)
+ event_name.should.equal?(:line)
args.should == []
end
- trace.enabled?.should == false
+ trace.should_not.enabled?
end
it 'enables trace object on calling with a block if it was already enabled' do
@@ -87,394 +110,434 @@ describe 'TracePoint#enable' do
it 'disables the trace object outside the block' do
called = false
- trace = TracePoint.new(:line) { called = true }
+ trace = TracePoint.new(:line) do
+ next unless TracePointSpec.target_thread?
+ called = true
+ end
trace.enable {
line_event = true
}
called.should == true
- trace.enabled?.should == false
+ trace.should_not.enabled?
end
end
- ruby_version_is "2.6" do
- describe 'target: option' do
- before :each do
- ScratchPad.record []
+ describe "when nested" do
+ before do
+ @path_prefix = ' '
+ end
+
+ it "enables both TracePoints but only calls the respective callbacks" do
+ called = false
+ first = TracePoint.new(:line) do |tp|
+ next unless TracePointSpec.target_thread?
+ called = true
end
- it 'enables trace point for specific location' do
- trace = TracePoint.new(:call) do |tp|
- ScratchPad << tp.method_id
+ all = []
+ inspects = []
+ second = TracePoint.new(:line) { |tp|
+ next unless TracePointSpec.target_thread?
+ all << tp
+ inspects << tp.inspect
+ }
+
+ line = nil
+ first.enable do
+ second.enable do
+ line = __LINE__
end
+ end
- obj = Object.new
- def obj.foo; end
- def obj.bar; end
+ all.uniq.should == [second]
+ inspects.uniq.should == ["#<TracePoint:line#{@path_prefix}#{__FILE__}:#{line}>"]
+ called.should == true
+ end
+ end
- trace.enable(target: obj.method(:foo)) do
- obj.foo
- obj.bar
- end
+ describe 'target: option' do
+ before :each do
+ ScratchPad.record []
+ end
- ScratchPad.recorded.should == [:foo]
+ 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 'traces all the events triggered in specified location' do
- trace = TracePoint.new(:line, :call, :return, :b_call, :b_return) do |tp|
- ScratchPad << tp.event
- end
+ obj = Object.new
+ def obj.foo; end
+ def obj.bar; end
- obj = Object.new
- def obj.foo
- bar
- -> {}.call
- 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
- end
+ ScratchPad.recorded.should == [:foo]
+ end
- ScratchPad.recorded.uniq.sort.should == [:call, :return, :b_call, :b_return, :line].sort
+ 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 'does not trace events in nested locations' do
- trace = TracePoint.new(:call) do |tp|
- ScratchPad << tp.method_id
- end
+ obj = Object.new
+ def obj.foo
+ bar
+ -> {}.call
+ end
+ def obj.bar; 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
- trace.enable(target: obj.method(:foo)) do
- obj.foo
- end
+ ScratchPad.recorded.uniq.sort.should == [:call, :return, :b_call, :b_return, :line].sort
+ end
- ScratchPad.recorded.should == [:foo]
+ 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
- it "traces some events in nested blocks" do
- klass = Class.new do
- def foo
+ 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
- 1.times do
- bar do
- end
+ bar do
end
end
end
+ end
- def bar(&blk)
- blk.call
- end
+ def bar(&blk)
+ blk.call
end
+ end
- trace = TracePoint.new(:b_call) do |tp|
- ScratchPad << tp.lineno
+ 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
+
+ trace.enable(target: obj.method(:foo)) do
+ obj.foo
+ end
+
+ 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 = klass.new
- _, lineno = obj.method(:foo).source_location
+ obj = Object.new
+ def obj.foo; end
trace.enable(target: obj.method(:foo)) do
obj.foo
end
- ScratchPad.recorded.should == (lineno+1..lineno+3).to_a
+ ScratchPad.recorded.should == [:foo]
end
- describe 'option value' do
- it 'accepts Method' do
- trace = TracePoint.new(:call) do |tp|
- ScratchPad << tp.method_id
- end
-
- obj = Object.new
- def obj.foo; end
+ it 'accepts UnboundMethod' 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
+ klass = Class.new do
+ def foo; end
+ end
- ScratchPad.recorded.should == [:foo]
+ unbound_method = klass.instance_method(:foo)
+ trace.enable(target: unbound_method) do
+ klass.new.foo
end
- it 'accepts UnboundMethod' do
- trace = TracePoint.new(:call) do |tp|
- ScratchPad << tp.method_id
- end
+ ScratchPad.recorded.should == [:foo]
+ end
- klass = Class.new do
- def foo; end
- end
+ it 'accepts Proc' do
+ trace = TracePoint.new(:b_call) do |tp|
+ next unless TracePointSpec.target_thread?
+ ScratchPad << tp.lineno
+ end
- unbound_method = klass.instance_method(:foo)
- trace.enable(target: unbound_method) do
- klass.new.foo
- end
+ block = proc {}
+ _, lineno = block.source_location
- ScratchPad.recorded.should == [:foo]
+ trace.enable(target: block) do
+ block.call
end
- it 'accepts Proc' do
- trace = TracePoint.new(:b_call) do |tp|
- ScratchPad << tp.lineno
- end
+ ScratchPad.recorded.should == [lineno]
+ lineno.should.is_a?(Integer)
+ end
+ end
- block = proc {}
- _, lineno = block.source_location
+ 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: block) do
- block.call
- end
+ block = proc {}
- ScratchPad.recorded.should == [lineno]
- lineno.should be_kind_of(Integer)
+ -> {
+ trace.enable(target: block) do
+ block.call # triggers :b_call and :b_return events
end
- end
+ }.should.raise(ArgumentError, /can not enable any hooks/)
+ end
- it "raises ArgumentError if target object cannot trigger specified event" do
- trace = TracePoint.new(:call) do |tp|
- ScratchPad << tp.method_id
+ it "raises ArgumentError if passed not Method/UnboundMethod/Proc" do
+ trace = TracePoint.new(:call) {}
+
+ -> {
+ trace.enable(target: Object.new) do
end
+ }.should.raise(ArgumentError, /specified target is not supported/)
+ end
- block = proc {}
+ 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) {}
-> {
- trace.enable(target: block) do
- block.call # triggers :b_call and :b_return events
+ trace.enable(target: -> {}) do
+ trace.enable(target: -> {}) do
+ end
end
- }.should raise_error(ArgumentError, /can not enable any hooks/)
+ }.should.raise(ArgumentError, /can't nest-enable a targett?ing TracePoint/)
end
- it "raises ArgumentError if passed not Method/UnboundMethod/Proc" do
- trace = TracePoint.new(:call) do |tp|
- end
+ it "raises ArgumentError if trace point already enabled without target is re-enabled with target" do
+ trace = TracePoint.new(:b_call) {}
-> {
- trace.enable(target: Object.new) do
+ trace.enable do
+ trace.enable(target: -> {}) do
+ end
end
- }.should raise_error(ArgumentError, /specified target is not supported/)
+ }.should.raise(ArgumentError, /can't nest-enable a targett?ing TracePoint/)
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) do
- end
+ it "raises ArgumentError if trace point already enabled with target is re-enabled without target" do
+ trace = TracePoint.new(:b_call) {}
- -> {
- trace.enable(target: -> {}) do
- trace.enable(target: -> {}) do
- end
+ -> {
+ trace.enable(target: -> {}) do
+ trace.enable do
end
- }.should raise_error(ArgumentError, /can't nest-enable a targett?ing TracePoint/)
- end
-
- it "raises ArgumentError if trace point already enabled without target is re-enabled with target" do
- trace = TracePoint.new(:b_call) do
end
+ }.should.raise(ArgumentError, /can't nest-enable a targett?ing TracePoint/)
+ end
- -> {
- trace.enable do
- trace.enable(target: -> {}) do
- end
- end
- }.should raise_error(ArgumentError, /can't nest-enable a targett?ing TracePoint/)
- end
+ it "raises ArgumentError if trace point already enabled with target is disabled with block" do
+ trace = TracePoint.new(:b_call) {}
- it "raises ArgumentError if trace point already enabled with target is re-enabled without target" do
- trace = TracePoint.new(:b_call) do
+ -> {
+ trace.enable(target: -> {}) do
+ trace.disable do
+ end
end
+ }.should.raise(ArgumentError, /can't disable a targett?ing TracePoint in a block/)
+ 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 without 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) do
- end
-
- -> {
- 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|
- ScratchPad << :outer
- end
+ target = -> {}
- trace_inner = TracePoint.new(:b_call) do |tp|
- ScratchPad << :inner
+ trace_outer.enable do
+ trace_inner.enable(target: target) do
+ target.call
end
+ end
- target = -> {}
+ ScratchPad.recorded.should == [:outer, :outer, :outer, :inner]
+ end
- trace_outer.enable do
- trace_inner.enable(target: target) do
- target.call
- end
- 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
- ScratchPad.recorded.should == [:outer, :outer, :outer, :inner]
+ 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 with target" do
- trace_outer = TracePoint.new(:b_call) do |tp|
- ScratchPad << :outer
- end
+ target = -> {}
- trace_inner = TracePoint.new(:b_call) do |tp|
- ScratchPad << :inner
+ trace_outer.enable(target: target) do
+ trace_inner.enable(target: target) do
+ target.call
end
+ end
- target = -> {}
-
- trace_outer.enable(target: target) do
- trace_inner.enable(target: target) do
- target.call
- end
- end
+ ScratchPad.recorded.should == [:inner, :outer]
+ end
- ScratchPad.recorded.should == [:inner, :outer]
+ 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 without target is enabled in another trace point enabled with target" do
- trace_outer = TracePoint.new(:b_call) do |tp|
- ScratchPad << :outer
- end
-
- trace_inner = TracePoint.new(:b_call) do |tp|
- 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 do
- target.call
- end
+ trace_outer.enable(target: target) do
+ trace_inner.enable do
+ target.call
end
-
- ScratchPad.recorded.should == [:inner, :inner, :outer]
end
- end
- end
- describe 'target_line: option' do
- before :each do
- ScratchPad.record []
+ ScratchPad.recorded.should == [:inner, :inner, :outer]
end
+ end
+ end
- it "traces :line events only on specified line of code" do
- trace = TracePoint.new(:line) do |tp|
- ScratchPad << tp.lineno
- end
+ describe 'target_line: option' do
+ before :each do
+ ScratchPad.record []
+ end
- target = -> {
- x = 1
- y = 2 # <= this line is target
- z = x + y
- }
- _, lineno = target.source_location
- target_line = lineno + 2
+ 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.enable(target_line: target_line, target: target) do
- target.call
- end
+ target = -> {
+ x = 1
+ y = 2 # <= this line is target
+ z = x + y
+ }
+ _, lineno = target.source_location
+ target_line = lineno + 2
- ScratchPad.recorded.should == [target_line]
+ trace.enable(target_line: target_line, target: target) do
+ target.call
end
- it "raises ArgumentError if :target option isn't specified" do
- trace = TracePoint.new(:line) do |tp|
- end
+ ScratchPad.recorded.should == [target_line]
+ end
- -> {
- trace.enable(target_line: 67) do
- end
- }.should raise_error(ArgumentError, /only target_line is specified/)
- end
+ it "raises ArgumentError if :target option isn't specified" do
+ trace = TracePoint.new(:line) {}
- it "raises ArgumentError if :line event isn't registered" do
- trace = TracePoint.new(:call) do |tp|
+ -> {
+ trace.enable(target_line: 67) do
end
+ }.should.raise(ArgumentError, /only target_line is specified/)
+ end
- target = -> {
- x = 1
- y = 2 # <= this line is target
- z = x + y
- }
- _, lineno = target.source_location
- target_line = lineno + 2
+ it "raises ArgumentError if :line event isn't registered" do
+ trace = TracePoint.new(:call) {}
- -> {
- 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
+ target = -> {
+ x = 1
+ y = 2 # <= this line is target
+ z = x + y
+ }
+ _, lineno = target.source_location
+ target_line = lineno + 2
- it "raises ArgumentError if :target_line value is out of target code lines range" do
- trace = TracePoint.new(:line) do |tp|
+ -> {
+ trace.enable(target_line: target_line, target: target) do
end
+ }.should.raise(ArgumentError, /target_line is specified, but line event is not specified/)
+ 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 out of target code lines range" do
+ trace = TracePoint.new(:line) {}
- it "raises TypeError if :target_line value couldn't be coerced to Integer" do
- trace = TracePoint.new(:line) do |tp|
+ -> {
+ trace.enable(target_line: 1, target: -> { }) do
end
+ }.should.raise(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/)
- 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 negative" do
- trace = TracePoint.new(:line) do |tp|
+ -> {
+ trace.enable(target_line: Object.new, target: -> { }) do
end
+ }.should.raise(TypeError, /no implicit conversion of \w+? into Integer/)
+ end
- -> {
- trace.enable(target_line: -2, 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 "accepts value that could be coerced to Integer" do
- trace = TracePoint.new(:line) do |tp|
- ScratchPad << tp.lineno
+ -> {
+ trace.enable(target_line: -2, target: -> { }) do
end
+ }.should.raise(ArgumentError, /can not enable any hooks/)
+ end
- target = -> {
- x = 1 # <= this line is target
- }
- _, lineno = target.source_location
- target_line = lineno + 1
+ 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
- trace.enable(target_line: target_line.to_r, target: target) do
- target.call
- end
+ target = -> {
+ x = 1 # <= this line is target
+ }
+ _, lineno = target.source_location
+ target_line = lineno + 1
- ScratchPad.recorded.should == [target_line]
+ trace.enable(target_line: target_line.to_r, target: target) do
+ target.call
end
+
+ ScratchPad.recorded.should == [target_line]
end
end
end
diff --git a/spec/ruby/core/tracepoint/enabled_spec.rb b/spec/ruby/core/tracepoint/enabled_spec.rb
index 0167d32fb0..0e9566a02c 100644
--- a/spec/ruby/core/tracepoint/enabled_spec.rb
+++ b/spec/ruby/core/tracepoint/enabled_spec.rb
@@ -1,14 +1,15 @@
require_relative '../../spec_helper'
+require_relative 'fixtures/classes'
describe 'TracePoint#enabled?' do
it 'returns true when current status of the trace is enable' do
trace = TracePoint.new(:line) {}
trace.enable do
- trace.enabled?.should == true
+ trace.should.enabled?
end
end
it 'returns false when current status of the trace is disabled' do
- TracePoint.new(:line) {}.enabled?.should == false
+ TracePoint.new(:line) {}.should_not.enabled?
end
end
diff --git a/spec/ruby/core/tracepoint/eval_script_spec.rb b/spec/ruby/core/tracepoint/eval_script_spec.rb
index 1d8e425a9a..7ec53e7094 100644
--- a/spec/ruby/core/tracepoint/eval_script_spec.rb
+++ b/spec/ruby/core/tracepoint/eval_script_spec.rb
@@ -1,24 +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|
- 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/event_spec.rb b/spec/ruby/core/tracepoint/event_spec.rb
index 019d0c3253..58017dc98d 100644
--- a/spec/ruby/core/tracepoint/event_spec.rb
+++ b/spec/ruby/core/tracepoint/event_spec.rb
@@ -5,16 +5,17 @@ describe 'TracePoint#event' do
it 'returns the type of event' do
event_name = nil
TracePoint.new(:end, :call) do |tp|
+ next unless TracePointSpec.target_thread?
event_name = tp.event
end.enable do
TracePointSpec.test
- event_name.should equal(:call)
+ event_name.should.equal?(:call)
TracePointSpec::B.new.foo
- event_name.should equal(:call)
+ event_name.should.equal?(:call)
class TracePointSpec::B; end
- event_name.should equal(:end)
+ event_name.should.equal?(:end)
end
end
diff --git a/spec/ruby/core/tracepoint/fixtures/classes.rb b/spec/ruby/core/tracepoint/fixtures/classes.rb
index 49c70e1915..3ab1b00b16 100644
--- a/spec/ruby/core/tracepoint/fixtures/classes.rb
+++ b/spec/ruby/core/tracepoint/fixtures/classes.rb
@@ -1,4 +1,10 @@
module TracePointSpec
+ @thread = Thread.current
+
+ def self.target_thread?
+ Thread.current == @thread
+ end
+
class ClassWithMethodAlias
def m
end
diff --git a/spec/ruby/core/tracepoint/inspect_spec.rb b/spec/ruby/core/tracepoint/inspect_spec.rb
index 9ff1653ae8..6cc2ebe243 100644
--- a/spec/ruby/core/tracepoint/inspect_spec.rb
+++ b/spec/ruby/core/tracepoint/inspect_spec.rb
@@ -2,27 +2,140 @@ require_relative '../../spec_helper'
require_relative 'fixtures/classes'
describe 'TracePoint#inspect' do
+ before do
+ @path_prefix = ' '
+ end
+
it 'returns a string containing a human-readable TracePoint status' do
- TracePoint.new(:line) {}.inspect.should ==
- '#<TracePoint:disabled>'
+ 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 = __LINE__
- TracePoint.new(:line) { |tp| inspect = tp.inspect }.enable do
- inspect.should == "#<TracePoint:line@#{__FILE__}:#{line+2}>"
+ line = nil
+ TracePoint.new(:line) { |tp|
+ next unless TracePointSpec.target_thread?
+ next unless tp.path == __FILE__
+
+ inspect ||= tp.inspect
+ }.enable do
+ line = __LINE__
+ end
+
+ inspect.should == "#<TracePoint:line#{@path_prefix}#{__FILE__}:#{line}>"
+ end
+
+ it 'returns a String showing the event, method, path and line for a :call event' do
+ inspect = nil
+ line = nil
+ TracePoint.new(:call) { |tp|
+ next unless TracePointSpec.target_thread?
+ next unless tp.path == __FILE__
+
+ inspect ||= tp.inspect
+ }.enable do
+ line = __LINE__ + 1
+ def trace_point_spec_test_call; end
+ trace_point_spec_test_call
+ end
+
+ 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
+ inspect = nil
+ line = nil
+ TracePoint.new(:return) { |tp|
+ next unless TracePointSpec.target_thread?
+ next unless tp.path == __FILE__
+
+ inspect ||= tp.inspect
+ }.enable do
+ line = __LINE__ + 4
+ def trace_point_spec_test_return
+ a = 1
+ return a
+ end
+ trace_point_spec_test_return
+ end
+ ruby_version_is("3.4") { line -= 1 }
+
+ 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
+ tracepoint = TracePoint.new(:c_call) { |tp|
+ next unless TracePointSpec.target_thread?
+ next unless tp.path == __FILE__
+
+ inspect ||= tp.inspect
+ }
+ line = __LINE__ + 2
+ tracepoint.enable do
+ [0, 1].max
end
+
+ 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
inspect = nil
- line = __LINE__
- TracePoint.new(:class) { |tp| inspect = tp.inspect }.enable do
+ line = nil
+ TracePoint.new(:class) { |tp|
+ next unless TracePointSpec.target_thread?
+ next unless tp.path == __FILE__
+
+ inspect ||= tp.inspect
+ }.enable do
+ line = __LINE__ + 1
class TracePointSpec::C
end
end
- inspect.should == "#<TracePoint:class@#{__FILE__}:#{line+2}>"
+ inspect.should == "#<TracePoint:class#{@path_prefix}#{__FILE__}:#{line}>"
+ end
+
+ it 'returns a String showing the event and thread for :thread_begin event' do
+ inspect = nil
+ thread = nil
+ thread_inspection = nil
+ TracePoint.new(:thread_begin) { |tp|
+ next unless Thread.current == thread
+
+ inspect ||= tp.inspect
+ }.enable(target_thread: nil) do
+ thread = Thread.new {}
+ thread_inspection = thread.inspect
+ thread.join
+ end
+
+ inspect.should == "#<TracePoint:thread_begin #{thread_inspection}>"
+ end
+
+ it 'returns a String showing the event and thread for :thread_end event' do
+ inspect = nil
+ thread = nil
+ thread_inspection = nil
+ TracePoint.new(:thread_end) { |tp|
+ next unless Thread.current == thread
+
+ inspect ||= tp.inspect
+ }.enable(target_thread: nil) do
+ thread = Thread.new {}
+ thread_inspection = thread.inspect
+ thread.join
+ end
+
+ inspect.should == "#<TracePoint:thread_end #{thread_inspection}>"
end
end
diff --git a/spec/ruby/core/tracepoint/lineno_spec.rb b/spec/ruby/core/tracepoint/lineno_spec.rb
index a4d7e77e8d..7c46d5222b 100644
--- a/spec/ruby/core/tracepoint/lineno_spec.rb
+++ b/spec/ruby/core/tracepoint/lineno_spec.rb
@@ -1,10 +1,20 @@
require_relative '../../spec_helper'
+require_relative 'fixtures/classes'
describe 'TracePoint#lineno' do
it 'returns the line number of the event' do
lineno = nil
- TracePoint.new(:line) { |tp| lineno = tp.lineno }.enable do
- lineno.should == 7
+ TracePoint.new(:line) { |tp|
+ next unless TracePointSpec.target_thread?
+ lineno = tp.lineno
+ }.enable do
+ line_event = true
end
+ lineno.should == __LINE__ - 2
+ end
+
+ it 'raises RuntimeError if accessed from outside' do
+ tp = TracePoint.new(:line) {}
+ -> { tp.lineno }.should.raise(RuntimeError, 'access from outside')
end
end
diff --git a/spec/ruby/core/tracepoint/method_id_spec.rb b/spec/ruby/core/tracepoint/method_id_spec.rb
index 82254d1299..67740f2d7d 100644
--- a/spec/ruby/core/tracepoint/method_id_spec.rb
+++ b/spec/ruby/core/tracepoint/method_id_spec.rb
@@ -1,13 +1,15 @@
require_relative '../../spec_helper'
+require_relative 'fixtures/classes'
describe 'TracePoint#method_id' do
- def test; end
-
it 'returns the name at the definition of the method being called' do
method_name = nil
- TracePoint.new(:call) { |tp| method_name = tp.method_id}.enable do
- test
- method_name.should equal(:test)
+ TracePoint.new(:call) { |tp|
+ next unless TracePointSpec.target_thread?
+ method_name = tp.method_id
+ }.enable do
+ TracePointSpec.test
+ method_name.should.equal?(:test)
end
end
end
diff --git a/spec/ruby/core/tracepoint/new_spec.rb b/spec/ruby/core/tracepoint/new_spec.rb
index 916d826fdf..763b35292b 100644
--- a/spec/ruby/core/tracepoint/new_spec.rb
+++ b/spec/ruby/core/tracepoint/new_spec.rb
@@ -3,21 +3,24 @@ require_relative 'fixtures/classes'
describe 'TracePoint.new' do
it 'returns a new TracePoint object, not enabled by default' do
- TracePoint.new(:line) {}.enabled?.should be_false
+ TracePoint.new(:line) {}.enabled?.should == false
end
it 'includes :line event when event is not specified' do
event_name = nil
- TracePoint.new() { |tp| event_name = tp.event }.enable do
- event_name.should equal(:line)
+ TracePoint.new { |tp|
+ next unless TracePointSpec.target_thread?
+ event_name = tp.event
+ }.enable do
+ event_name.should.equal?(:line)
event_name = nil
TracePointSpec.test
- event_name.should equal(:line)
+ event_name.should.equal?(:line)
event_name = nil
TracePointSpec::B.new.foo
- event_name.should equal(:line)
+ event_name.should.equal?(:line)
end
end
@@ -25,7 +28,10 @@ describe 'TracePoint.new' do
event_name = nil
(o = mock('line')).should_receive(:to_sym).and_return(:line)
- TracePoint.new(o) { |tp| event_name = tp.event }.enable do
+ TracePoint.new(o) { |tp|
+ next unless TracePointSpec.target_thread?
+ event_name = tp.event
+ }.enable do
line_event = true
event_name.should == :line
end
@@ -34,34 +40,33 @@ describe 'TracePoint.new' do
it 'includes multiple events when multiple event names are passed as params' do
event_name = nil
TracePoint.new(:end, :call) do |tp|
+ next unless TracePointSpec.target_thread?
event_name = tp.event
end.enable do
TracePointSpec.test
- event_name.should equal(:call)
+ event_name.should.equal?(:call)
TracePointSpec::B.new.foo
- event_name.should equal(:call)
+ event_name.should.equal?(:call)
class TracePointSpec::B; end
- event_name.should equal(:end)
+ event_name.should.equal?(:end)
end
end
it 'raises a TypeError when the given object is not a string/symbol' do
o = mock('123')
- -> { TracePoint.new(o) {}}.should raise_error(TypeError)
+ -> { TracePoint.new(o) {} }.should.raise(TypeError)
o.should_receive(:to_sym).and_return(123)
- -> { TracePoint.new(o) {}}.should raise_error(TypeError)
+ -> { TracePoint.new(o) {} }.should.raise(TypeError)
end
- ruby_version_is "2.5" do
- it 'expects to be called with a block' do
- -> { TracePoint.new(:line) }.should raise_error(ArgumentError, "must be called with a block")
- end
+ it 'expects to be called with a block' do
+ -> { TracePoint.new(:line) }.should.raise(ArgumentError, "must be called with a block")
end
it "raises a Argument error when the given argument doesn't match an event name" do
- -> { TracePoint.new(:test) }.should raise_error(ArgumentError, "unknown event: test")
+ -> { TracePoint.new(:test) }.should.raise(ArgumentError, "unknown event: test")
end
end
diff --git a/spec/ruby/core/tracepoint/parameters_spec.rb b/spec/ruby/core/tracepoint/parameters_spec.rb
index f901c184f4..82aee3caa4 100644
--- a/spec/ruby/core/tracepoint/parameters_spec.rb
+++ b/spec/ruby/core/tracepoint/parameters_spec.rb
@@ -1,23 +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| 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| 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 1e31c1bb68..aa6868ead2 100644
--- a/spec/ruby/core/tracepoint/path_spec.rb
+++ b/spec/ruby/core/tracepoint/path_spec.rb
@@ -1,18 +1,26 @@
require_relative '../../spec_helper'
+require_relative 'fixtures/classes'
describe 'TracePoint#path' do
it 'returns the path of the file being run' do
path = nil
- TracePoint.new(:line) { |tp| path = tp.path }.enable do
- path.should == "#{__FILE__}"
+ TracePoint.new(:line) { |tp|
+ next unless TracePointSpec.target_thread?
+ path = tp.path
+ }.enable do
+ line_event = true
end
+ path.should == "#{__FILE__}"
end
- it 'equals (eval) inside an eval for :end event' do
+ it 'equals "(eval at __FILE__:__LINE__)" inside an eval for :end event' do
path = nil
- TracePoint.new(:end) { |tp| path = tp.path }.enable do
+ TracePoint.new(:end) { |tp|
+ next unless TracePointSpec.target_thread?
+ path = tp.path
+ }.enable do
eval("module TracePointSpec; end")
- path.should == '(eval)'
end
+ path.should == "(eval at #{__FILE__}:#{__LINE__ - 2})"
end
end
diff --git a/spec/ruby/core/tracepoint/raised_exception_spec.rb b/spec/ruby/core/tracepoint/raised_exception_spec.rb
index 450717b958..b1199902f2 100644
--- a/spec/ruby/core/tracepoint/raised_exception_spec.rb
+++ b/spec/ruby/core/tracepoint/raised_exception_spec.rb
@@ -1,16 +1,36 @@
require_relative '../../spec_helper'
+require_relative 'fixtures/classes'
describe 'TracePoint#raised_exception' do
it 'returns value from exception raised on the :raise event' do
raised_exception, error_result = nil
- trace = TracePoint.new(:raise) { |tp| raised_exception = tp.raised_exception }
+ trace = TracePoint.new(:raise) { |tp|
+ next unless TracePointSpec.target_thread?
+ raised_exception = tp.raised_exception
+ }
trace.enable do
begin
raise StandardError
rescue => e
error_result = e
end
- raised_exception.should equal(error_result)
+ raised_exception.should.equal?(error_result)
+ end
+ end
+
+ it 'returns value from exception rescued on the :rescue event' do
+ raised_exception, error_result = nil
+ trace = TracePoint.new(:rescue) { |tp|
+ next unless TracePointSpec.target_thread?
+ raised_exception = tp.raised_exception
+ }
+ trace.enable do
+ begin
+ raise StandardError
+ rescue => e
+ error_result = e
+ end
+ raised_exception.should.equal?(error_result)
end
end
end
diff --git a/spec/ruby/core/tracepoint/return_value_spec.rb b/spec/ruby/core/tracepoint/return_value_spec.rb
index f0ed86bd00..e84c7dd762 100644
--- a/spec/ruby/core/tracepoint/return_value_spec.rb
+++ b/spec/ruby/core/tracepoint/return_value_spec.rb
@@ -1,11 +1,15 @@
require_relative '../../spec_helper'
+require_relative 'fixtures/classes'
describe 'TracePoint#return_value' do
def test; 'test' end
it 'returns value from :return event' do
trace_value = nil
- TracePoint.new(:return) { |tp| trace_value = tp.return_value}.enable do
+ TracePoint.new(:return) { |tp|
+ next unless TracePointSpec.target_thread?
+ trace_value = tp.return_value
+ }.enable do
test
trace_value.should == 'test'
end
diff --git a/spec/ruby/core/tracepoint/self_spec.rb b/spec/ruby/core/tracepoint/self_spec.rb
index 8bfd09301e..bf9a2b6a45 100644
--- a/spec/ruby/core/tracepoint/self_spec.rb
+++ b/spec/ruby/core/tracepoint/self_spec.rb
@@ -4,17 +4,23 @@ require_relative 'fixtures/classes'
describe 'TracePoint#self' do
it 'return the trace object from event' do
trace = nil
- TracePoint.new(:line) { |tp| trace = tp.self }.enable do
- trace.equal?(self).should be_true
+ TracePoint.new(:line) { |tp|
+ next unless TracePointSpec.target_thread?
+ trace = tp.self
+ }.enable do
+ trace.equal?(self).should == true
end
end
it 'return the class object from a class event' do
trace = nil
- TracePoint.new(:class) { |tp| trace = tp.self }.enable do
+ TracePoint.new(:class) { |tp|
+ next unless TracePointSpec.target_thread?
+ trace = tp.self
+ }.enable do
class TracePointSpec::C
end
end
- trace.should equal TracePointSpec::C
+ trace.should.equal? TracePointSpec::C
end
end
diff --git a/spec/ruby/core/tracepoint/trace_spec.rb b/spec/ruby/core/tracepoint/trace_spec.rb
index ea6c85bcc5..167f594bb9 100644
--- a/spec/ruby/core/tracepoint/trace_spec.rb
+++ b/spec/ruby/core/tracepoint/trace_spec.rb
@@ -1,9 +1,10 @@
require_relative '../../spec_helper'
+require_relative 'fixtures/classes'
describe 'TracePoint.trace' do
it 'activates the trace automatically' do
trace = TracePoint.trace(:line) {}
- trace.enabled?.should == true
+ trace.should.enabled?
trace.disable
end
end