rb-threadframe 0.39 → 0.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/NEWS +6 -0
- data/README.md +6 -3
- data/Rakefile +4 -4
- data/ext/1.9.3/thread_frame.c +22 -0
- data/ext/extconf.rb +2 -2
- data/ext/version.h +1 -0
- data/lib/iseq_extra.rb +7 -6
- data/lib/thread_frame.rb +9 -1
- data/test/unit/cfunc-use.rb +1 -1
- data/test/unit/test-argc.rb +3 -2
- data/test/unit/test-binding.rb +5 -5
- data/test/unit/{test-thread.rb → test-frame.rb} +36 -33
- data/test/unit/test-invalid.rb +6 -5
- data/test/unit/test-iseq-brkpt.rb +4 -4
- data/test/unit/test-iseq-save.rb +1 -1
- data/test/unit/test-iseq.rb +10 -9
- data/test/unit/test-lib-iseq-extra.rb +14 -5
- data/test/unit/test-lib-iseq.rb +9 -8
- data/test/unit/test-prev.rb +12 -12
- data/test/unit/test-proc.rb +4 -1
- data/test/unit/test-return-stop.rb +3 -4
- data/test/unit/test-settracefunc.rb +67 -43
- data/test/unit/test-source.rb +7 -8
- data/test/unit/test-sp-size.rb +4 -5
- data/test/unit/test-thread-trace-masks.rb +2 -1
- data/test/unit/test-trace.rb +4 -4
- data/threadframe.rd +31 -31
- metadata +31 -57
- data/ext/iseq_extra.c +0 -441
- data/ext/iseq_extra.h +0 -8
- data/ext/iseq_mini.h +0 -41
- data/ext/node.h +0 -483
- data/ext/proc_extra.c +0 -186
- data/ext/proc_extra.h +0 -3
- data/ext/thread_extra.c +0 -84
- data/ext/thread_extra.h +0 -5
- data/ext/thread_frame.c +0 -1165
- data/ext/thread_frame.h +0 -4
- data/ext/thread_pthread.h +0 -24
- data/test/ruby/test_brkpt.rb +0 -60
- data/test/ruby/test_disasm.rb +0 -17
- data/test/ruby/test_iseq.rb +0 -50
- data/test/ruby/test_tracefunc_raise.rb +0 -26
data/test/unit/test-iseq.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'test/unit'
|
2
|
-
require_relative '../../ext/thread_frame'
|
2
|
+
require_relative '../../ext/thread_frame' if '1.9.2' == RUBY_VERSION
|
3
3
|
|
4
4
|
class TestISeq < Test::Unit::TestCase
|
5
5
|
|
6
6
|
class C
|
7
7
|
def initialize(test_obj, optional=true)
|
8
|
-
iseq = RubyVM::
|
8
|
+
iseq = RubyVM::Frame::current.iseq
|
9
9
|
test_obj.assert_equal('test_obj', iseq.local_name(0))
|
10
10
|
test_obj.assert_equal(1, iseq.arity)
|
11
11
|
test_obj.assert_equal(-1, iseq.arg_block)
|
@@ -15,7 +15,7 @@ class TestISeq < Test::Unit::TestCase
|
|
15
15
|
|
16
16
|
def test_fields
|
17
17
|
start_lineno = __LINE__ - 1;
|
18
|
-
iseq = RubyVM::
|
18
|
+
iseq = RubyVM::Frame::current.iseq
|
19
19
|
assert iseq
|
20
20
|
assert_equal('test_fields', iseq.name)
|
21
21
|
## FIXME: Why does this fail?
|
@@ -26,7 +26,7 @@ class TestISeq < Test::Unit::TestCase
|
|
26
26
|
assert_equal(0, iseq.arg_opts)
|
27
27
|
assert_equal(4, iseq.local_table_size)
|
28
28
|
x = lambda do |x,y|
|
29
|
-
iseq = RubyVM::
|
29
|
+
iseq = RubyVM::Frame::current.iseq
|
30
30
|
assert iseq
|
31
31
|
assert_equal(2, iseq.arity)
|
32
32
|
assert_equal(-1, iseq.arg_block)
|
@@ -45,7 +45,7 @@ class TestISeq < Test::Unit::TestCase
|
|
45
45
|
x.call(1,2)
|
46
46
|
|
47
47
|
x = Proc.new do |a|
|
48
|
-
iseq = RubyVM::
|
48
|
+
iseq = RubyVM::Frame::current.iseq
|
49
49
|
assert iseq
|
50
50
|
assert_equal(1, iseq.arity)
|
51
51
|
assert_equal(-1, iseq.arg_block)
|
@@ -70,8 +70,8 @@ class TestISeq < Test::Unit::TestCase
|
|
70
70
|
end
|
71
71
|
|
72
72
|
def test_iseq_equal
|
73
|
-
tf = RubyVM::
|
74
|
-
tf2 = RubyVM::
|
73
|
+
tf = RubyVM::Frame.current
|
74
|
+
tf2 = RubyVM::Frame.current
|
75
75
|
while !tf.iseq do
|
76
76
|
tf = tf.prev
|
77
77
|
tf2 = tf2.prev
|
@@ -90,7 +90,8 @@ class TestISeq < Test::Unit::TestCase
|
|
90
90
|
# FIXME: killcache interface will probably change. Try make less sensitive
|
91
91
|
# to compile sequence
|
92
92
|
def test_iseq_killcache
|
93
|
-
|
93
|
+
skip "killcache doesn't work on 1.9.3" if '1.9.3' == RUBY_VERSION
|
94
|
+
iseq = RubyVM::Frame.current.iseq
|
94
95
|
count = iseq.killcache
|
95
96
|
if 0 != count
|
96
97
|
assert_equal(0, iseq.killcache,
|
@@ -100,7 +101,7 @@ class TestISeq < Test::Unit::TestCase
|
|
100
101
|
|
101
102
|
def test_offsetlines
|
102
103
|
start = __LINE__ - 1
|
103
|
-
tf = RubyVM::
|
104
|
+
tf = RubyVM::Frame::current
|
104
105
|
iseq = tf.iseq
|
105
106
|
offlines = iseq.offsetlines
|
106
107
|
pc = tf.pc_offset
|
@@ -4,7 +4,7 @@ require_relative '../../lib/iseq_extra'
|
|
4
4
|
class TestLibISeqExtra < Test::Unit::TestCase
|
5
5
|
|
6
6
|
def test_basic
|
7
|
-
tf = RubyVM::
|
7
|
+
tf = RubyVM::Frame.current
|
8
8
|
iseq = tf.iseq
|
9
9
|
# See that we get the same line numbers
|
10
10
|
assert_equal(iseq.offsetlines.values.flatten.uniq.sort,
|
@@ -17,8 +17,6 @@ class TestLibISeqExtra < Test::Unit::TestCase
|
|
17
17
|
iseq.line2offsets(__LINE__-1).sort)
|
18
18
|
|
19
19
|
assert_equal([], iseq.line2offsets(__LINE__+100))
|
20
|
-
top_iseq = tf.prev(-1).iseq
|
21
|
-
assert_equal('method', RubyVM::InstructionSequence::TYPE2STR[top_iseq.type])
|
22
20
|
|
23
21
|
iseq2 = tf.iseq
|
24
22
|
# Different object ids...
|
@@ -37,6 +35,17 @@ class TestLibISeqExtra < Test::Unit::TestCase
|
|
37
35
|
end
|
38
36
|
end
|
39
37
|
|
38
|
+
def test_iseq_type
|
39
|
+
tf = RubyVM::Frame.current
|
40
|
+
top_iseq = tf.prev(-1).iseq
|
41
|
+
if '1.9.3' == RUBY_VERSION
|
42
|
+
assert_equal('METHOD', tf.prev.type)
|
43
|
+
else
|
44
|
+
assert_equal('method',
|
45
|
+
RubyVM::InstructionSequence::TYPE2STR[top_iseq.type])
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
40
49
|
def test_format_args
|
41
50
|
# These prototypes are from IRB
|
42
51
|
def evaluate(context, statements, file = __FILE__, line = __LINE__); end
|
@@ -55,9 +64,9 @@ class TestLibISeqExtra < Test::Unit::TestCase
|
|
55
64
|
end
|
56
65
|
|
57
66
|
def test_iseq_parent
|
58
|
-
parent_iseq = RubyVM::
|
67
|
+
parent_iseq = RubyVM::Frame::current.iseq
|
59
68
|
1.times do
|
60
|
-
tf = RubyVM::
|
69
|
+
tf = RubyVM::Frame::current
|
61
70
|
assert_equal(true, tf.iseq.parent.equal?(parent_iseq))
|
62
71
|
end
|
63
72
|
end
|
data/test/unit/test-lib-iseq.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'test/unit'
|
2
|
-
require_relative '../../ext/thread_frame'
|
3
|
-
require_relative '../../lib/thread_frame'
|
2
|
+
require_relative '../../ext/thread_frame' if '1.9.2' == RUBY_VERSION
|
3
|
+
require_relative '../../lib/thread_frame' if '1.9.2' == RUBY_VERSION
|
4
|
+
require_relative '../../lib/iseq_extra'
|
4
5
|
|
5
6
|
$global_test_line = __LINE__
|
6
7
|
|
@@ -9,22 +10,22 @@ class TestLibISeq < Test::Unit::TestCase
|
|
9
10
|
TEST_LINE = __LINE__
|
10
11
|
|
11
12
|
def test_sha1
|
12
|
-
iseq1 = RubyVM::
|
13
|
-
iseq2 = RubyVM::
|
13
|
+
iseq1 = RubyVM::Frame::current.iseq
|
14
|
+
iseq2 = RubyVM::Frame::current.iseq
|
14
15
|
assert_equal(iseq1.sha1, iseq2.sha1,
|
15
16
|
"SHA1 for same threadframe should match")
|
16
17
|
end
|
17
18
|
|
18
19
|
def test_lines
|
19
20
|
line = __LINE__
|
20
|
-
iseq = RubyVM::
|
21
|
+
iseq = RubyVM::Frame::current.iseq
|
21
22
|
assert_equal((line-1..__LINE__+2).to_a, iseq.lines,
|
22
23
|
"lines of test_lines() don't match")
|
23
24
|
end
|
24
25
|
|
25
26
|
def test_locate_line
|
26
27
|
line = __LINE__
|
27
|
-
iseq = RubyVM::
|
28
|
+
iseq = RubyVM::Frame::current.iseq
|
28
29
|
assert iseq.locate_line(line)
|
29
30
|
assert_nil iseq.locate_line(line - 2)
|
30
31
|
end
|
@@ -34,11 +35,11 @@ class TestLibISeq < Test::Unit::TestCase
|
|
34
35
|
# It is lame how little we can do here.
|
35
36
|
line = __LINE__
|
36
37
|
def find_line(line) # :nodoc
|
37
|
-
tf = RubyVM::
|
38
|
+
tf = RubyVM::Frame.current
|
38
39
|
assert(tf.iseq.find_iseq_with_line(line),
|
39
40
|
"should have found line #{line}")
|
40
41
|
end
|
41
|
-
tf = RubyVM::
|
42
|
+
tf = RubyVM::Frame.current
|
42
43
|
find_line(line+2)
|
43
44
|
# line2 = nil
|
44
45
|
# 1.times do
|
data/test/unit/test-prev.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'test/unit'
|
2
|
-
require_relative '../../ext/thread_frame'
|
2
|
+
require_relative '../../ext/thread_frame' if '1.9.2' == RUBY_VERSION
|
3
3
|
|
4
4
|
class TestThread < Test::Unit::TestCase
|
5
5
|
def test_stack_size_with_prev
|
6
|
-
tf = RubyVM::
|
6
|
+
tf = RubyVM::Frame.new(Thread::current)
|
7
7
|
|
8
8
|
# valid prev counts are -stack_size .. stack_size-1
|
9
9
|
n = tf.stack_size
|
@@ -21,26 +21,26 @@ class TestThread < Test::Unit::TestCase
|
|
21
21
|
|
22
22
|
def test_prev
|
23
23
|
|
24
|
-
assert RubyVM::
|
24
|
+
assert RubyVM::Frame::prev(Thread::current, 1),
|
25
25
|
'should allow 2-arg prev'
|
26
|
-
assert RubyVM::
|
26
|
+
assert RubyVM::Frame::prev(Thread::current),
|
27
27
|
'should allow 1-arg thread prev'
|
28
|
-
assert(RubyVM::
|
28
|
+
assert(RubyVM::Frame::prev(2),
|
29
29
|
'There should be at least two prior frames in single Fixnum prev')
|
30
30
|
|
31
|
-
top_frame = RubyVM::
|
31
|
+
top_frame = RubyVM::Frame::prev(Thread::current, -1)
|
32
32
|
assert(top_frame, 'Should give back the top frame for two arg and -1')
|
33
33
|
assert_equal('TOP', top_frame.type,
|
34
34
|
'The type of the top frame should be "TOP"')
|
35
35
|
|
36
|
-
top_frame = RubyVM::
|
36
|
+
top_frame = RubyVM::Frame::prev(-1)
|
37
37
|
assert(top_frame, 'Should give back the top frame for one arg and -1')
|
38
38
|
assert_equal('TOP', top_frame.type,
|
39
39
|
'The type of the top frame should be "TOP"')
|
40
40
|
|
41
|
-
assert_equal(nil, RubyVM::
|
41
|
+
assert_equal(nil, RubyVM::Frame::prev(Thread::current, 1000))
|
42
42
|
|
43
|
-
tf = RubyVM::
|
43
|
+
tf = RubyVM::Frame.prev
|
44
44
|
|
45
45
|
assert tf.prev(2)
|
46
46
|
assert_equal(tf, tf.prev(0),
|
@@ -52,13 +52,13 @@ class TestThread < Test::Unit::TestCase
|
|
52
52
|
tf.prev('a')
|
53
53
|
end
|
54
54
|
assert_raises ArgumentError do
|
55
|
-
tf.prev(RubyVM::
|
55
|
+
tf.prev(RubyVM::Frame::current, 1, 'bad_arg')
|
56
56
|
end
|
57
57
|
assert_raises TypeError do
|
58
|
-
RubyVM::
|
58
|
+
RubyVM::Frame::prev([1])
|
59
59
|
end
|
60
60
|
assert_raises TypeError do
|
61
|
-
RubyVM::
|
61
|
+
RubyVM::Frame::prev(RubyVM::Frame::current, [1])
|
62
62
|
end
|
63
63
|
|
64
64
|
end
|
data/test/unit/test-proc.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Test of additional proc and method
|
2
2
|
require 'test/unit'
|
3
|
-
|
3
|
+
|
4
|
+
require_relative '../../ext/thread_frame' if '1.9.2' == RUBY_VERSION
|
4
5
|
|
5
6
|
class TestProcAndMethod < Test::Unit::TestCase
|
6
7
|
def test_proc_iseq
|
@@ -8,6 +9,8 @@ class TestProcAndMethod < Test::Unit::TestCase
|
|
8
9
|
Proc.new{|x,y| x+y}.iseq.is_a?(RubyVM::InstructionSequence))
|
9
10
|
end
|
10
11
|
def test_method_extra
|
12
|
+
# skip "Figure out what's up with on 1.9.3" if
|
13
|
+
# '1.9.3' == RUBY_VERSION
|
11
14
|
m = self.method :test_method_extra
|
12
15
|
assert_equal(1, m.alias_count)
|
13
16
|
assert_equal(:test_method_extra, m.original_id)
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
|
3
|
-
|
4
|
-
require_relative '../../ext/thread_frame'
|
3
|
+
require_relative '../../ext/thread_frame' if '1.9.2' == RUBY_VERSION
|
5
4
|
|
6
5
|
# Test source_location and source_container.
|
7
6
|
class TestReturnStop < Test::Unit::TestCase
|
@@ -9,7 +8,7 @@ class TestReturnStop < Test::Unit::TestCase
|
|
9
8
|
def setup
|
10
9
|
@tuples = []
|
11
10
|
@p = Proc.new { |event, file, lineno, mid, binding, klass|
|
12
|
-
# RubyVM::
|
11
|
+
# RubyVM::Frame.current.trace_off = true
|
13
12
|
@tuples << [event, lineno, mid, klass]
|
14
13
|
# p [event, lineno, mid, klass]
|
15
14
|
}
|
@@ -20,7 +19,7 @@ class TestReturnStop < Test::Unit::TestCase
|
|
20
19
|
def five; 5 end
|
21
20
|
|
22
21
|
def recurse(a, trace_off)
|
23
|
-
tf = RubyVM::
|
22
|
+
tf = RubyVM::Frame::current
|
24
23
|
if a==1
|
25
24
|
assert_equal false, tf.return_stop?
|
26
25
|
tf.return_stop=trace_off
|
@@ -45,14 +45,18 @@ class TestSetTraceFunc < Test::Unit::TestCase
|
|
45
45
|
5: set_trace_func(nil)
|
46
46
|
EOF
|
47
47
|
|
48
|
-
expected =
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
48
|
+
expected =
|
49
|
+
[
|
50
|
+
[4, 'line', __method__, self.class],
|
51
|
+
[4, 'send', __method__, self.class],
|
52
|
+
[4, "c-call", :+, Fixnum],
|
53
|
+
[4, "c-return", :+, Fixnum],
|
54
|
+
[5, "line", __method__, self.class],
|
55
|
+
[5, "send", __method__, self.class],
|
56
|
+
[5, "c-call", :set_trace_func, Kernel]
|
57
|
+
]
|
58
|
+
expected.unshift [5, 'c-return', :set_trace_func, Kernel] if
|
59
|
+
'1.9.3' == RUBY_VERSION
|
56
60
|
checkit(@events, expected)
|
57
61
|
end
|
58
62
|
|
@@ -87,6 +91,9 @@ class TestSetTraceFunc < Test::Unit::TestCase
|
|
87
91
|
[8, 'send', __method__, self.class],
|
88
92
|
[8, 'c-call', :set_trace_func, Kernel]
|
89
93
|
]
|
94
|
+
expected.unshift [3, 'c-return', :set_trace_func, Kernel] if
|
95
|
+
'1.9.3' == RUBY_VERSION
|
96
|
+
|
90
97
|
checkit(@events, expected)
|
91
98
|
end
|
92
99
|
|
@@ -102,29 +109,34 @@ class TestSetTraceFunc < Test::Unit::TestCase
|
|
102
109
|
8: x = Foo.new.bar
|
103
110
|
9: clear_trace_func()
|
104
111
|
EOF
|
105
|
-
expected =
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
112
|
+
expected =
|
113
|
+
[
|
114
|
+
[4, 'line', __method__, self.class],
|
115
|
+
[4, 'c-call', :inherited, Class],
|
116
|
+
[4, 'c-return', :inherited, Class],
|
117
|
+
[4, 'class', nil, nil],
|
118
|
+
[5, 'line', nil, nil],
|
119
|
+
[5, 'send', nil, nil],
|
120
|
+
[5, 'c-call', :method_added, Module],
|
121
|
+
[5, 'c-return', :method_added, Module],
|
122
|
+
[7, 'end', nil, nil],
|
123
|
+
[7, 'leave', nil, nil],
|
124
|
+
[8, 'line', __method__, self.class],
|
125
|
+
[8, 'send', __method__, self.class],
|
126
|
+
[8, 'c-call', :new, Class],
|
127
|
+
[8, 'c-call', :initialize, BasicObject],
|
128
|
+
[8, 'c-return', :initialize, BasicObject],
|
129
|
+
[8, 'c-return', :new, Class],
|
130
|
+
[8, 'send', __method__, Class],
|
131
|
+
[5, 'call', :bar, Foo],
|
132
|
+
[6, 'return', :bar, Foo],
|
133
|
+
[6, 'leave', :bar, Foo],
|
134
|
+
[9, 'line', __method__, self.class],
|
135
|
+
[9, 'send', __method__, self.class],
|
136
|
+
[9, 'c-call', :clear_trace_func, Kernel]
|
137
|
+
]
|
138
|
+
expected.unshift [3, 'c-return', :set_trace_func, Kernel] if
|
139
|
+
'1.9.3' == RUBY_VERSION
|
128
140
|
checkit(@events, expected)
|
129
141
|
end
|
130
142
|
|
@@ -194,6 +206,9 @@ class TestSetTraceFunc < Test::Unit::TestCase
|
|
194
206
|
[9, 'line', :test_return2, self.class],
|
195
207
|
[9, 'send', :test_return2, self.class],
|
196
208
|
[9, 'c-call', :set_trace_func, Kernel]]
|
209
|
+
expected.unshift [3, 'c-return', :set_trace_func, Kernel] if
|
210
|
+
'1.9.3' == RUBY_VERSION
|
211
|
+
|
197
212
|
@events.each_with_index{|e, i|
|
198
213
|
assert_equal(e, @events[i], showit(@events, expected))}
|
199
214
|
assert_equal(expected.size, @events.size, showit(@events, expected))
|
@@ -236,6 +251,9 @@ class TestSetTraceFunc < Test::Unit::TestCase
|
|
236
251
|
[8, 'send', __method__, self.class],
|
237
252
|
[8, 'c-call', :set_trace_func, Kernel]
|
238
253
|
]
|
254
|
+
expected.unshift [3, 'c-return', :set_trace_func, Kernel] if
|
255
|
+
'1.9.3' == RUBY_VERSION
|
256
|
+
|
239
257
|
checkit(events, expected)
|
240
258
|
end
|
241
259
|
|
@@ -249,18 +267,24 @@ class TestSetTraceFunc < Test::Unit::TestCase
|
|
249
267
|
8: set_trace_func(nil)
|
250
268
|
EOF
|
251
269
|
|
252
|
-
expected =
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
270
|
+
expected =
|
271
|
+
[
|
272
|
+
[4, 'line', __method__, self.class],
|
273
|
+
[4, 'send', __method__, self.class],
|
274
|
+
[4, 'c-call', :any?, Enumerable],
|
275
|
+
[4, 'c-call', :each, Array],
|
276
|
+
[4, 'line', __method__, self.class],
|
277
|
+
[4, 'leave', __method__, self.class],
|
278
|
+
[4, 'c-return', :each, Array],
|
279
|
+
[4, 'c-return', :any?, Enumerable],
|
280
|
+
[5, 'line', __method__, self.class],
|
281
|
+
[5, 'send', __method__, self.class],
|
282
|
+
[5, 'c-call', :set_trace_func, Kernel]
|
283
|
+
]
|
284
|
+
expected.unshift [3, 'c-return', :set_trace_func, Kernel] if
|
285
|
+
'1.9.3' == RUBY_VERSION
|
286
|
+
|
287
|
+
|
264
288
|
checkit(events, expected)
|
265
289
|
end
|
266
290
|
|
data/test/unit/test-source.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
|
3
|
-
|
4
|
-
require_relative '../../ext/thread_frame'
|
3
|
+
require_relative '../../ext/thread_frame' if '1.9.2' == RUBY_VERSION
|
5
4
|
|
6
5
|
# Test source_location and source_container.
|
7
6
|
class TestSource < Test::Unit::TestCase
|
@@ -21,7 +20,7 @@ class TestSource < Test::Unit::TestCase
|
|
21
20
|
assert_equal('string', iseq.source_container[0])
|
22
21
|
# puts iseq.source_container[1]
|
23
22
|
|
24
|
-
eval_str = ' RubyVM::
|
23
|
+
eval_str = ' RubyVM::Frame.current.source_container # test'
|
25
24
|
tuple = eval(eval_str)
|
26
25
|
assert_equal('string', tuple[0])
|
27
26
|
assert_equal(eval_str, tuple[1])
|
@@ -29,7 +28,7 @@ class TestSource < Test::Unit::TestCase
|
|
29
28
|
end
|
30
29
|
|
31
30
|
def test_basic
|
32
|
-
tf = RubyVM::
|
31
|
+
tf = RubyVM::Frame::current
|
33
32
|
# Is this too specific to test/unit.rb implementation details?
|
34
33
|
tup = tf.source_container
|
35
34
|
tup[1] = File.basename(tup[1])
|
@@ -39,7 +38,7 @@ class TestSource < Test::Unit::TestCase
|
|
39
38
|
# 1.times creates a C frame.
|
40
39
|
1.times do
|
41
40
|
expect_line = __LINE__ - 1
|
42
|
-
tf = RubyVM::
|
41
|
+
tf = RubyVM::Frame::current
|
43
42
|
tup = tf.source_container
|
44
43
|
tup[1] = File.basename(tup[1])
|
45
44
|
assert_equal(['file', File.basename(__FILE__)], tup)
|
@@ -54,7 +53,7 @@ class TestSource < Test::Unit::TestCase
|
|
54
53
|
# 1.upto also creates a C frame.
|
55
54
|
1.upto(1) do
|
56
55
|
expect_line = __LINE__ - 1
|
57
|
-
tf = RubyVM::
|
56
|
+
tf = RubyVM::Frame::current
|
58
57
|
assert_equal('BLOCK', tf.type)
|
59
58
|
tup = tf.source_container
|
60
59
|
tup[1] = File.basename(tup[1])
|
@@ -68,7 +67,7 @@ class TestSource < Test::Unit::TestCase
|
|
68
67
|
end
|
69
68
|
|
70
69
|
x = lambda do |expect_line|
|
71
|
-
tf = RubyVM::
|
70
|
+
tf = RubyVM::Frame::current
|
72
71
|
assert_equal('LAMBDA', tf.type)
|
73
72
|
tup = tf.source_container
|
74
73
|
tup[1] = File.basename(tup[1])
|
@@ -83,7 +82,7 @@ class TestSource < Test::Unit::TestCase
|
|
83
82
|
x.call(__LINE__)
|
84
83
|
|
85
84
|
x = Proc.new do |expect_line|
|
86
|
-
tf = RubyVM::
|
85
|
+
tf = RubyVM::Frame::current
|
87
86
|
tup = tf.source_container
|
88
87
|
tup[1] = File.basename(tup[1])
|
89
88
|
assert_equal(['file', File.basename(__FILE__)], tup)
|