binding_of_caller 0.8.0 → 1.0.0

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.
Files changed (65) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/test.yml +103 -0
  3. data/.gitignore +12 -7
  4. data/Gemfile +6 -1
  5. data/README.md +14 -5
  6. data/Rakefile +4 -132
  7. data/binding_of_caller.gemspec +33 -37
  8. data/lib/binding_of_caller.rb +7 -8
  9. data/lib/binding_of_caller/{mri2.rb → mri.rb} +0 -0
  10. data/lib/binding_of_caller/version.rb +1 -1
  11. metadata +26 -103
  12. data/.travis.yml +0 -35
  13. data/examples/benchmark.rb +0 -63
  14. data/examples/example.rb +0 -41
  15. data/ext/binding_of_caller/binding_of_caller.c +0 -225
  16. data/ext/binding_of_caller/extconf.rb +0 -28
  17. data/ext/binding_of_caller/ruby_headers/192/debug.h +0 -36
  18. data/ext/binding_of_caller/ruby_headers/192/dln.h +0 -41
  19. data/ext/binding_of_caller/ruby_headers/192/eval_intern.h +0 -232
  20. data/ext/binding_of_caller/ruby_headers/192/id.h +0 -173
  21. data/ext/binding_of_caller/ruby_headers/192/iseq.h +0 -104
  22. data/ext/binding_of_caller/ruby_headers/192/method.h +0 -103
  23. data/ext/binding_of_caller/ruby_headers/192/node.h +0 -483
  24. data/ext/binding_of_caller/ruby_headers/192/regenc.h +0 -211
  25. data/ext/binding_of_caller/ruby_headers/192/regint.h +0 -841
  26. data/ext/binding_of_caller/ruby_headers/192/regparse.h +0 -354
  27. data/ext/binding_of_caller/ruby_headers/192/rubys_gc.h +0 -77
  28. data/ext/binding_of_caller/ruby_headers/192/thread_pthread.h +0 -27
  29. data/ext/binding_of_caller/ruby_headers/192/thread_win32.h +0 -33
  30. data/ext/binding_of_caller/ruby_headers/192/timev.h +0 -21
  31. data/ext/binding_of_caller/ruby_headers/192/transcode_data.h +0 -109
  32. data/ext/binding_of_caller/ruby_headers/192/version.h +0 -55
  33. data/ext/binding_of_caller/ruby_headers/192/vm_core.h +0 -703
  34. data/ext/binding_of_caller/ruby_headers/192/vm_exec.h +0 -184
  35. data/ext/binding_of_caller/ruby_headers/192/vm_insnhelper.h +0 -208
  36. data/ext/binding_of_caller/ruby_headers/192/vm_opts.h +0 -51
  37. data/ext/binding_of_caller/ruby_headers/193/addr2line.h +0 -21
  38. data/ext/binding_of_caller/ruby_headers/193/atomic.h +0 -56
  39. data/ext/binding_of_caller/ruby_headers/193/constant.h +0 -34
  40. data/ext/binding_of_caller/ruby_headers/193/debug.h +0 -41
  41. data/ext/binding_of_caller/ruby_headers/193/dln.h +0 -50
  42. data/ext/binding_of_caller/ruby_headers/193/encdb.h +0 -167
  43. data/ext/binding_of_caller/ruby_headers/193/eval_intern.h +0 -234
  44. data/ext/binding_of_caller/ruby_headers/193/id.h +0 -175
  45. data/ext/binding_of_caller/ruby_headers/193/internal.h +0 -227
  46. data/ext/binding_of_caller/ruby_headers/193/iseq.h +0 -125
  47. data/ext/binding_of_caller/ruby_headers/193/method.h +0 -105
  48. data/ext/binding_of_caller/ruby_headers/193/node.h +0 -503
  49. data/ext/binding_of_caller/ruby_headers/193/parse.h +0 -186
  50. data/ext/binding_of_caller/ruby_headers/193/regenc.h +0 -219
  51. data/ext/binding_of_caller/ruby_headers/193/regint.h +0 -851
  52. data/ext/binding_of_caller/ruby_headers/193/regparse.h +0 -362
  53. data/ext/binding_of_caller/ruby_headers/193/revision.h +0 -1
  54. data/ext/binding_of_caller/ruby_headers/193/rubys_gc.h +0 -98
  55. data/ext/binding_of_caller/ruby_headers/193/thread_pthread.h +0 -51
  56. data/ext/binding_of_caller/ruby_headers/193/thread_win32.h +0 -40
  57. data/ext/binding_of_caller/ruby_headers/193/timev.h +0 -21
  58. data/ext/binding_of_caller/ruby_headers/193/transcode_data.h +0 -117
  59. data/ext/binding_of_caller/ruby_headers/193/transdb.h +0 -189
  60. data/ext/binding_of_caller/ruby_headers/193/version.h +0 -52
  61. data/ext/binding_of_caller/ruby_headers/193/vm_core.h +0 -755
  62. data/ext/binding_of_caller/ruby_headers/193/vm_exec.h +0 -184
  63. data/ext/binding_of_caller/ruby_headers/193/vm_insnhelper.h +0 -220
  64. data/ext/binding_of_caller/ruby_headers/193/vm_opts.h +0 -51
  65. data/test/test_binding_of_caller.rb +0 -161
@@ -1,161 +0,0 @@
1
- unless Object.const_defined? :BindingOfCaller
2
- $:.unshift File.expand_path '../../lib', __FILE__
3
- require 'binding_of_caller'
4
- require 'binding_of_caller/version'
5
- end
6
-
7
- class Module
8
- public :remove_const
9
- end
10
-
11
- puts "Testing binding_of_caller version #{BindingOfCaller::VERSION}..."
12
- puts "Ruby version: #{RUBY_VERSION}"
13
-
14
- describe BindingOfCaller do
15
- describe "of_caller" do
16
- it "should fetch immediate caller's binding when 0 is passed" do
17
- o = Object.new
18
- def o.a
19
- var = 1
20
- binding.of_caller(0).eval('var')
21
- end
22
-
23
- o. a.should == 1
24
- end
25
-
26
- it "should fetch parent of caller's binding when 1 is passed" do
27
- o = Object.new
28
- def o.a
29
- var = 1
30
- b
31
- end
32
-
33
- def o.b
34
- binding.of_caller(1).eval('var')
35
- end
36
-
37
- o.a.should == 1
38
- end
39
-
40
- it "should modify locals in parent of caller's binding" do
41
- o = Object.new
42
- def o.a
43
- var = 1
44
- b
45
- var
46
- end
47
-
48
- def o.b
49
- binding.of_caller(1).eval('var = 20')
50
- end
51
-
52
- o.a.should == 20
53
- end
54
-
55
- it "should raise an exception when retrieving an out of band binding" do
56
- o = Object.new
57
- def o.a
58
- binding.of_caller(100)
59
- end
60
-
61
- lambda { o.a }.should.raise RuntimeError
62
- end
63
- end
64
-
65
- describe "callers" do
66
- before do
67
- @o = Object.new
68
- end
69
-
70
- it 'should return the first non-internal binding when using callers.first' do
71
- def @o.meth
72
- x = :a_local
73
- [binding.callers.first, binding.of_caller(0)]
74
- end
75
-
76
- b1, b2 = @o.meth
77
- b1.eval("x").should == :a_local
78
- b2.eval("x").should == :a_local
79
- end
80
- end
81
-
82
- describe "frame_count" do
83
- it 'frame_count should equal callers.count' do
84
- binding.frame_count.should == binding.callers.count
85
- end
86
- end
87
-
88
- describe "frame_descripton" do
89
- it 'can be called on ordinary binding without raising' do
90
- lambda { binding.frame_description }.should.not.raise
91
- end
92
-
93
- it 'describes a block frame' do
94
- binding.of_caller(0).frame_description.should =~ /block/
95
- end
96
-
97
- it 'describes a method frame' do
98
- o = Object.new
99
- def o.horsey_malone
100
- binding.of_caller(0).frame_description.should =~ /horsey_malone/
101
- end
102
- o.horsey_malone
103
- end
104
-
105
- it 'describes a class frame' do
106
- class HorseyMalone
107
- binding.of_caller(0).frame_description.should =~ /class/i
108
- end
109
- Object.remove_const(:HorseyMalone)
110
- end
111
- end
112
-
113
- describe "frame_type" do
114
- it 'can be called on ordinary binding without raising' do
115
- lambda { binding.frame_type }.should.not.raise
116
- end
117
-
118
- describe "when inside a class definition" do
119
- before do
120
- class HorseyMalone
121
- @binding = binding.of_caller(0)
122
- def self.binding; @binding; end
123
- end
124
- @binding = HorseyMalone.binding
125
- end
126
-
127
- it 'returns :class' do
128
- @binding.frame_type.should == :class
129
- end
130
- end
131
-
132
- describe "when evaluated" do
133
- before { @binding = eval("binding.of_caller(0)") }
134
-
135
- it 'returns :eval' do
136
- @binding.frame_type.should == :eval
137
- end
138
- end
139
-
140
- describe "when inside a block" do
141
- before { @binding = proc { binding.of_caller(0) }.call }
142
-
143
- it 'returns :block' do
144
- @binding.frame_type.should == :block
145
- end
146
- end
147
-
148
- describe "when inside an instance method" do
149
- before do
150
- o = Object.new
151
- def o.a; binding.of_caller(0); end
152
- @binding = o.a;
153
- end
154
-
155
- it 'returns :method' do
156
- @binding.frame_type.should == :method
157
- end
158
- end
159
- end
160
- end
161
-