diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-05-26 04:49:23 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-05-26 04:49:23 +0000 |
commit | 4f54d4710e1edfbcb8b0d7d7feea1bd8c519229f (patch) | |
tree | d70505cbff9b7012a1871cd0d69a86c31ad79792 /test | |
parent | fbf531c4a249e75260e80ed767114b02e0a1e985 (diff) |
* vm.c (RubyVM::FrameInfo): add a class to access each frame
information. You don't need to parse strings from caller().
FrameInfo has the following methods:
FrameInfo#name: method name, class name, etc with decorations.
FrameInfo#basename: name without decorations.
FrameInfo#line_no: line number.
FrameInfo#filename: file name.
FrameInfo#filepath: full filepath.
FrameInfo#iseq: iseq if it is iseq frame (defined by ruby script)
FrameInfo#to_s: return caller() method style string.
RubyVM::FrameInfoFrameInfo.caller(n, lev) returns array of
FrameInfo objects. The name "RubyVM::FrameInfoFrameInfo.caller"
is long and ambiguous (same as caller() method), we need to change
the name before Ruby 2.0 release.
Good names or comments are welcome.
* test/ruby/test_backtrace.rb: add a test for above change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35801 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r-- | test/ruby/test_backtrace.rb | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/test/ruby/test_backtrace.rb b/test/ruby/test_backtrace.rb index c35b95c9e1..5eae64f325 100644 --- a/test/ruby/test_backtrace.rb +++ b/test/ruby/test_backtrace.rb @@ -84,4 +84,14 @@ class TestBacktrace < Test::Unit::TestCase } rec[m] end + + def test_caller_frame_info + fis = RubyVM::FrameInfo.caller(0); cs = caller(0) + assert_equal(cs.size, fis.size) + fis.zip(cs).each{|fi, s| + assert_match(/#{fi.name}/, s) + assert_match(/#{fi.filename}/, s) + assert_match(/#{fi.line_no}/, s) + } + end end |