diff options
Diffstat (limited to 'spec/ruby/core/tracepoint/disable_spec.rb')
| -rw-r--r-- | spec/ruby/core/tracepoint/disable_spec.rb | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/spec/ruby/core/tracepoint/disable_spec.rb b/spec/ruby/core/tracepoint/disable_spec.rb new file mode 100644 index 0000000000..73a31b3b81 --- /dev/null +++ b/spec/ruby/core/tracepoint/disable_spec.rb @@ -0,0 +1,76 @@ +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 + + trace.enable + begin + line_event = true + ensure + ret = trace.disable + ret.should == true + end + called.should == true + + # Check the TracePoint is disabled + called = false + line_event = true + called.should == false + end + + 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 + trace.disable.should == false + line_event = true + called.should == false + end + + it 'is disabled within a block & is enabled outside the block' do + enabled = nil + trace = TracePoint.new(:line) {} + trace.enable + begin + trace.disable { enabled = trace.enabled? } + enabled.should == false + trace.should.enabled? + ensure + trace.disable + end + end + + it 'returns the return value of the block' do + trace = TracePoint.new(:line) {} + trace.enable + begin + trace.disable { 42 }.should == 42 + trace.should.enabled? + ensure + trace.disable + end + end + + it 'can accept param within a block but it should not yield arguments' do + trace = TracePoint.new(:line) {} + trace.enable + begin + trace.disable do |*args| + args.should == [] + end + trace.should.enabled? + ensure + trace.disable + end + end +end |
