* Fix debug documents to match Thread#to_s change (Feature #16412 ticket) * TracePoint#inspect returns "... file:line" (Feature #16513) * Guard older version of Ruby in Tracepoint inspection tests * Focus on current thread only when running TracePoint inspection test
This commit is contained in:
parent
bbbec4b87c
commit
1819652578
Notes:
git
2020-08-06 11:56:48 +09:00
Merged-By: ko1 <ko1@atdot.net>
@ -1012,8 +1012,8 @@ EOHELP
|
|||||||
#
|
#
|
||||||
# (rdb:1) DEBUGGER__.thread_list_all
|
# (rdb:1) DEBUGGER__.thread_list_all
|
||||||
# +1 #<Thread:0x007fb2320c03f0 run> debug_me.rb.rb:3
|
# +1 #<Thread:0x007fb2320c03f0 run> debug_me.rb.rb:3
|
||||||
# 2 #<Thread:0x007fb23218a538@debug_me.rb.rb:3 sleep>
|
# 2 #<Thread:0x007fb23218a538 debug_me.rb.rb:3 sleep>
|
||||||
# 3 #<Thread:0x007fb23218b0f0@debug_me.rb.rb:3 sleep>
|
# 3 #<Thread:0x007fb23218b0f0 debug_me.rb.rb:3 sleep>
|
||||||
# [1, 2, 3]
|
# [1, 2, 3]
|
||||||
#
|
#
|
||||||
# Your current thread is indicated by a <b>+</b>
|
# Your current thread is indicated by a <b>+</b>
|
||||||
@ -1022,8 +1022,8 @@ EOHELP
|
|||||||
#
|
#
|
||||||
# (rdb:1) th l
|
# (rdb:1) th l
|
||||||
# +1 #<Thread:0x007f99328c0410 run> debug_me.rb:3
|
# +1 #<Thread:0x007f99328c0410 run> debug_me.rb:3
|
||||||
# 2 #<Thread:0x007f9932938230@debug_me.rb:3 sleep> debug_me.rb:3
|
# 2 #<Thread:0x007f9932938230 debug_me.rb:3 sleep> debug_me.rb:3
|
||||||
# 3 #<Thread:0x007f9932938e10@debug_me.rb:3 sleep> debug_me.rb:3
|
# 3 #<Thread:0x007f9932938e10 debug_me.rb:3 sleep> debug_me.rb:3
|
||||||
#
|
#
|
||||||
# See DEBUGGER__ for more usage.
|
# See DEBUGGER__ for more usage.
|
||||||
|
|
||||||
|
@ -123,6 +123,18 @@ describe 'TracePoint#enable' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe "when nested" do
|
describe "when nested" do
|
||||||
|
before do
|
||||||
|
ruby_version_is ""..."2.8" do
|
||||||
|
# Old behavior for Ruby < 2.8
|
||||||
|
@path_prefix = '@'
|
||||||
|
end
|
||||||
|
|
||||||
|
ruby_version_is "2.8" do
|
||||||
|
# New behavior for Ruby >= 2.8
|
||||||
|
@path_prefix = ' '
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
it "enables both TracePoints but only calls the respective callbacks" do
|
it "enables both TracePoints but only calls the respective callbacks" do
|
||||||
called = false
|
called = false
|
||||||
first = TracePoint.new(:line) do |tp|
|
first = TracePoint.new(:line) do |tp|
|
||||||
@ -146,7 +158,7 @@ describe 'TracePoint#enable' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
all.uniq.should == [second]
|
all.uniq.should == [second]
|
||||||
inspects.uniq.should == ["#<TracePoint:line@#{__FILE__}:#{line}>"]
|
inspects.uniq.should == ["#<TracePoint:line#{@path_prefix}#{__FILE__}:#{line}>"]
|
||||||
called.should == true
|
called.should == true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -2,6 +2,18 @@ require_relative '../../spec_helper'
|
|||||||
require_relative 'fixtures/classes'
|
require_relative 'fixtures/classes'
|
||||||
|
|
||||||
describe 'TracePoint#inspect' do
|
describe 'TracePoint#inspect' do
|
||||||
|
before do
|
||||||
|
ruby_version_is ""..."2.8" do
|
||||||
|
# Old behavior for Ruby < 2.8
|
||||||
|
@path_prefix = '@'
|
||||||
|
end
|
||||||
|
|
||||||
|
ruby_version_is "2.8" do
|
||||||
|
# New behavior for Ruby >= 2.8
|
||||||
|
@path_prefix = ' '
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
it 'returns a string containing a human-readable TracePoint status' do
|
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
|
end
|
||||||
@ -16,7 +28,54 @@ describe 'TracePoint#inspect' do
|
|||||||
line = __LINE__
|
line = __LINE__
|
||||||
end
|
end
|
||||||
|
|
||||||
inspect.should == "#<TracePoint:line@#{__FILE__}:#{line}>"
|
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?
|
||||||
|
inspect ||= tp.inspect
|
||||||
|
}.enable do
|
||||||
|
line = __LINE__ + 1
|
||||||
|
def trace_point_spec_test_call; end
|
||||||
|
trace_point_spec_test_call
|
||||||
|
end
|
||||||
|
|
||||||
|
inspect.should == "#<TracePoint:call `trace_point_spec_test_call'#{@path_prefix}#{__FILE__}:#{line}>"
|
||||||
|
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?
|
||||||
|
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
|
||||||
|
|
||||||
|
inspect.should == "#<TracePoint:return `trace_point_spec_test_return'#{@path_prefix}#{__FILE__}:#{line}>"
|
||||||
|
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|
|
||||||
|
next unless TracePointSpec.target_thread?
|
||||||
|
inspect ||= tp.inspect
|
||||||
|
}.enable do
|
||||||
|
line = __LINE__ + 1
|
||||||
|
[0, 1].max
|
||||||
|
end
|
||||||
|
|
||||||
|
inspect.should == "#<TracePoint:c_call `max'#{@path_prefix}#{__FILE__}:#{line}>"
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'returns a String showing the event, path and line for a :class event' do
|
it 'returns a String showing the event, path and line for a :class event' do
|
||||||
@ -31,6 +90,38 @@ describe 'TracePoint#inspect' do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
inspect.should == "#<TracePoint:class@#{__FILE__}:#{line}>"
|
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 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 do
|
||||||
|
thread = Thread.new {}
|
||||||
|
thread_inspection = thread.inspect
|
||||||
|
thread.join
|
||||||
|
end
|
||||||
|
|
||||||
|
inspect.should == "#<TracePoint:thread_end #{thread_inspection}>"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -937,9 +937,9 @@ class TestSetTraceFunc < Test::Unit::TestCase
|
|||||||
when :line
|
when :line
|
||||||
assert_match(/ in /, str)
|
assert_match(/ in /, str)
|
||||||
when :call, :c_call
|
when :call, :c_call
|
||||||
assert_match(/call \`/, str) # #<TracePoint:c_call `inherited'@../trunk/test.rb:11>
|
assert_match(/call \`/, str) # #<TracePoint:c_call `inherited' ../trunk/test.rb:11>
|
||||||
when :return, :c_return
|
when :return, :c_return
|
||||||
assert_match(/return \`/, str) # #<TracePoint:return `m'@../trunk/test.rb:3>
|
assert_match(/return \`/, str) # #<TracePoint:return `m' ../trunk/test.rb:3>
|
||||||
when /thread/
|
when /thread/
|
||||||
assert_match(/\#<Thread:/, str) # #<TracePoint:thread_end of #<Thread:0x87076c0>>
|
assert_match(/\#<Thread:/, str) # #<TracePoint:thread_end of #<Thread:0x87076c0>>
|
||||||
else
|
else
|
||||||
|
@ -183,7 +183,7 @@ class TracePoint
|
|||||||
# t.enable(target: method(:m1))
|
# t.enable(target: method(:m1))
|
||||||
#
|
#
|
||||||
# m1
|
# m1
|
||||||
# # prints #<TracePoint:line@test.rb:4 in `m1'>
|
# # prints #<TracePoint:line test.rb:4 in `m1'>
|
||||||
# m2
|
# m2
|
||||||
# # prints nothing
|
# # prints nothing
|
||||||
#
|
#
|
||||||
|
@ -1456,7 +1456,7 @@ tracepoint_inspect(rb_execution_context_t *ec, VALUE self)
|
|||||||
VALUE sym = rb_tracearg_method_id(trace_arg);
|
VALUE sym = rb_tracearg_method_id(trace_arg);
|
||||||
if (NIL_P(sym))
|
if (NIL_P(sym))
|
||||||
break;
|
break;
|
||||||
return rb_sprintf("#<TracePoint:%"PRIsVALUE"@%"PRIsVALUE":%d in `%"PRIsVALUE"'>",
|
return rb_sprintf("#<TracePoint:%"PRIsVALUE" %"PRIsVALUE":%d in `%"PRIsVALUE"'>",
|
||||||
rb_tracearg_event(trace_arg),
|
rb_tracearg_event(trace_arg),
|
||||||
rb_tracearg_path(trace_arg),
|
rb_tracearg_path(trace_arg),
|
||||||
FIX2INT(rb_tracearg_lineno(trace_arg)),
|
FIX2INT(rb_tracearg_lineno(trace_arg)),
|
||||||
@ -1466,7 +1466,7 @@ tracepoint_inspect(rb_execution_context_t *ec, VALUE self)
|
|||||||
case RUBY_EVENT_C_CALL:
|
case RUBY_EVENT_C_CALL:
|
||||||
case RUBY_EVENT_RETURN:
|
case RUBY_EVENT_RETURN:
|
||||||
case RUBY_EVENT_C_RETURN:
|
case RUBY_EVENT_C_RETURN:
|
||||||
return rb_sprintf("#<TracePoint:%"PRIsVALUE" `%"PRIsVALUE"'@%"PRIsVALUE":%d>",
|
return rb_sprintf("#<TracePoint:%"PRIsVALUE" `%"PRIsVALUE"' %"PRIsVALUE":%d>",
|
||||||
rb_tracearg_event(trace_arg),
|
rb_tracearg_event(trace_arg),
|
||||||
rb_tracearg_method_id(trace_arg),
|
rb_tracearg_method_id(trace_arg),
|
||||||
rb_tracearg_path(trace_arg),
|
rb_tracearg_path(trace_arg),
|
||||||
@ -1479,7 +1479,7 @@ tracepoint_inspect(rb_execution_context_t *ec, VALUE self)
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return rb_sprintf("#<TracePoint:%"PRIsVALUE"@%"PRIsVALUE":%d>",
|
return rb_sprintf("#<TracePoint:%"PRIsVALUE" %"PRIsVALUE":%d>",
|
||||||
rb_tracearg_event(trace_arg),
|
rb_tracearg_event(trace_arg),
|
||||||
rb_tracearg_path(trace_arg),
|
rb_tracearg_path(trace_arg),
|
||||||
FIX2INT(rb_tracearg_lineno(trace_arg)));
|
FIX2INT(rb_tracearg_lineno(trace_arg)));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user