mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* test/ruby/test_settracefunc.rb (test_return, test_return2): add two
tests for [ruby-dev:38701] and [ruby-core:24463]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24581 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									db09f6e84e
								
							
						
					
					
						commit
						43d0c7263b
					
				
					 2 changed files with 88 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -1,3 +1,8 @@
 | 
			
		|||
Wed Aug 19 02:54:01 2009  Yusuke Endoh  <mame@tsg.ne.jp>
 | 
			
		||||
 | 
			
		||||
	* test/ruby/test_settracefunc.rb (test_return, test_return2): add two
 | 
			
		||||
	  tests for [ruby-dev:38701] and [ruby-core:24463].
 | 
			
		||||
 | 
			
		||||
Wed Aug 19 01:08:34 2009  Yusuke Endoh  <mame@tsg.ne.jp>
 | 
			
		||||
 | 
			
		||||
	* compile.c (NODE_RETURN): fire return event at explicit return.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -129,6 +129,89 @@ class TestSetTraceFunc < Test::Unit::TestCase
 | 
			
		|||
    assert_equal([], events)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_return # [ruby-dev:38701]
 | 
			
		||||
    events = []
 | 
			
		||||
    eval <<-EOF.gsub(/^.*?: /, "")
 | 
			
		||||
     1: set_trace_func(Proc.new { |event, file, lineno, mid, binding, klass|
 | 
			
		||||
     2:   events << [event, lineno, mid, klass]
 | 
			
		||||
     3: })
 | 
			
		||||
     4: def foo(a)
 | 
			
		||||
     5:   return if a
 | 
			
		||||
     6:   return
 | 
			
		||||
     7: end
 | 
			
		||||
     8: foo(true)
 | 
			
		||||
     9: foo(false)
 | 
			
		||||
    10: set_trace_func(nil)
 | 
			
		||||
    EOF
 | 
			
		||||
    assert_equal(["c-return", 3, :set_trace_func, Kernel],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["line", 4, __method__, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["c-call", 4, :method_added, Module],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["c-return", 4, :method_added, Module],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["line", 8, __method__, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["call", 4, :foo, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["line", 5, :foo, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["return", 5, :foo, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["line", 9, :test_return, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["call", 4, :foo, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["line", 5, :foo, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["return", 7, :foo, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["line", 10, :test_return, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["c-call", 10, :set_trace_func, Kernel],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal([], events)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_return2 # [ruby-core:24463]
 | 
			
		||||
    events = []
 | 
			
		||||
    eval <<-EOF.gsub(/^.*?: /, "")
 | 
			
		||||
     1: set_trace_func(Proc.new { |event, file, lineno, mid, binding, klass|
 | 
			
		||||
     2:   events << [event, lineno, mid, klass]
 | 
			
		||||
     3: })
 | 
			
		||||
     4: def foo
 | 
			
		||||
     5:   a = 5
 | 
			
		||||
     6:   return a
 | 
			
		||||
     7: end
 | 
			
		||||
     8: foo
 | 
			
		||||
     9: set_trace_func(nil)
 | 
			
		||||
    EOF
 | 
			
		||||
    assert_equal(["c-return", 3, :set_trace_func, Kernel],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["line", 4, __method__, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["c-call", 4, :method_added, Module],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["c-return", 4, :method_added, Module],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["line", 8, __method__, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["call", 4, :foo, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["line", 5, :foo, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["line", 6, :foo, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["return", 7, :foo, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["line", 9, :test_return2, self.class],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal(["c-call", 9, :set_trace_func, Kernel],
 | 
			
		||||
                 events.shift)
 | 
			
		||||
    assert_equal([], events)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_raise
 | 
			
		||||
    events = []
 | 
			
		||||
    eval <<-EOF.gsub(/^.*?: /, "")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue