ruby-prof 0.15.8 → 0.15.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +5 -0
  3. data/README.rdoc +187 -185
  4. data/doc/LICENSE.html +114 -0
  5. data/doc/README_rdoc.html +544 -0
  6. data/doc/Rack.html +95 -0
  7. data/doc/Rack/RubyProf.html +223 -0
  8. data/doc/RubyProf.html +961 -0
  9. data/doc/RubyProf/AbstractPrinter.html +546 -0
  10. data/doc/RubyProf/AggregateCallInfo.html +551 -0
  11. data/doc/RubyProf/CallInfo.html +639 -0
  12. data/doc/RubyProf/CallInfoPrinter.html +120 -0
  13. data/doc/RubyProf/CallInfoVisitor.html +198 -0
  14. data/doc/RubyProf/CallStackPrinter.html +1121 -0
  15. data/doc/RubyProf/CallTreePrinter.html +359 -0
  16. data/doc/RubyProf/Cmd.html +631 -0
  17. data/doc/RubyProf/DotPrinter.html +257 -0
  18. data/doc/RubyProf/FlatPrinter.html +163 -0
  19. data/doc/RubyProf/FlatPrinterWithLineNumbers.html +208 -0
  20. data/doc/RubyProf/GraphHtmlPrinter.html +552 -0
  21. data/doc/RubyProf/GraphPrinter.html +139 -0
  22. data/doc/RubyProf/MethodInfo.html +745 -0
  23. data/doc/RubyProf/MultiPrinter.html +358 -0
  24. data/doc/RubyProf/Profile.html +713 -0
  25. data/doc/RubyProf/ProfileTask.html +490 -0
  26. data/doc/RubyProf/Thread.html +268 -0
  27. data/doc/created.rid +13 -13
  28. data/doc/examples/flat_txt.html +138 -0
  29. data/doc/examples/graph_html.html +909 -0
  30. data/doc/examples/graph_txt.html +247 -0
  31. data/doc/images/add.png +0 -0
  32. data/doc/images/arrow_up.png +0 -0
  33. data/doc/images/brick.png +0 -0
  34. data/doc/images/brick_link.png +0 -0
  35. data/doc/images/bug.png +0 -0
  36. data/doc/images/bullet_black.png +0 -0
  37. data/doc/images/bullet_toggle_minus.png +0 -0
  38. data/doc/images/bullet_toggle_plus.png +0 -0
  39. data/doc/images/date.png +0 -0
  40. data/doc/images/delete.png +0 -0
  41. data/doc/images/find.png +0 -0
  42. data/doc/images/macFFBgHack.png +0 -0
  43. data/doc/images/package.png +0 -0
  44. data/doc/images/page_green.png +0 -0
  45. data/doc/images/page_white_text.png +0 -0
  46. data/doc/images/page_white_width.png +0 -0
  47. data/doc/images/plugin.png +0 -0
  48. data/doc/images/ruby.png +0 -0
  49. data/doc/images/tag_blue.png +0 -0
  50. data/doc/images/tag_green.png +0 -0
  51. data/doc/images/transparent.png +0 -0
  52. data/doc/images/wrench.png +0 -0
  53. data/doc/images/wrench_orange.png +0 -0
  54. data/doc/images/zoom.png +0 -0
  55. data/doc/index.html +571 -0
  56. data/doc/js/navigation.js.gz +0 -0
  57. data/doc/js/search_index.js +1 -1
  58. data/doc/js/search_index.js.gz +0 -0
  59. data/doc/js/searcher.js.gz +0 -0
  60. data/doc/table_of_contents.html +893 -0
  61. data/examples/flat.txt +50 -55
  62. data/examples/graph.html +823 -823
  63. data/examples/graph.txt +139 -170
  64. data/ext/ruby_prof/extconf.rb +6 -1
  65. data/lib/ruby-prof/aggregate_call_info.rb +17 -11
  66. data/lib/ruby-prof/call_info.rb +2 -17
  67. data/lib/ruby-prof/method_info.rb +6 -22
  68. data/lib/ruby-prof/printers/graph_html_printer.rb +0 -2
  69. data/lib/ruby-prof/printers/graph_printer.rb +4 -6
  70. data/lib/ruby-prof/rack.rb +7 -0
  71. data/lib/ruby-prof/thread.rb +0 -4
  72. data/lib/ruby-prof/version.rb +1 -1
  73. data/ruby-prof.gemspec +1 -1
  74. data/test/basic_test.rb +26 -26
  75. data/test/issue137_test.rb +63 -0
  76. data/test/measure_allocations_test.rb +4 -3
  77. data/test/measure_cpu_time_test.rb +6 -6
  78. data/test/measure_process_time_test.rb +8 -8
  79. data/test/pause_resume_test.rb +9 -9
  80. data/test/printers_test.rb +1 -1
  81. data/test/printing_recursive_graph_test.rb +127 -0
  82. data/test/rack_test.rb +49 -1
  83. data/test/recursive_test.rb +41 -37
  84. data/test/test_helper.rb +93 -0
  85. metadata +59 -5
@@ -8,6 +8,16 @@ class FakeRackApp
8
8
  end
9
9
  end
10
10
 
11
+ module Rack
12
+ class Request
13
+ def initialize(env)
14
+ end
15
+ def path
16
+ '/path/to/resource.json'
17
+ end
18
+ end
19
+ end
20
+
11
21
  class RackTest < TestCase
12
22
  def test_create_print_path
13
23
  path = Dir.mktmpdir
@@ -15,6 +25,44 @@ class RackTest < TestCase
15
25
 
16
26
  Rack::RubyProf.new(FakeRackApp.new, :path => path)
17
27
 
18
- assert_equal(true, Dir.exist?(path))
28
+ assert(Dir.exist?(path))
29
+ end
30
+
31
+ def test_create_profile_reports
32
+ path = Dir.mktmpdir
33
+
34
+ adapter = Rack::RubyProf.new(FakeRackApp.new, :path => path)
35
+
36
+ adapter.call(:fake_env)
37
+
38
+ %w(flat.txt graph.txt graph.html call_stack.html).each do |base_name|
39
+ file_path = ::File.join(path, "path-to-resource.json-#{base_name}")
40
+ assert(File.exist?(file_path))
41
+ end
42
+ end
43
+
44
+ def test_skip_paths
45
+ path = Dir.mktmpdir
46
+
47
+ adapter = Rack::RubyProf.new(FakeRackApp.new, :path => path, :skip_paths => [%r{\.json$}])
48
+
49
+ adapter.call(:fake_env)
50
+
51
+ %w(flat.txt graph.txt graph.html call_stack.html).each do |base_name|
52
+ file_path = ::File.join(path, "path-to-resource.json-#{base_name}")
53
+ assert(!File.exist?(file_path))
54
+ end
55
+ end
56
+
57
+ def test_allows_lazy_filename_setting
58
+ path = Dir.mktmpdir
59
+
60
+ printer = {::RubyProf::FlatPrinter => lambda { 'dynamic.txt' }}
61
+ adapter = Rack::RubyProf.new(FakeRackApp.new, :path => path, :printers => printer)
62
+
63
+ adapter.call(:fake_env)
64
+
65
+ file_path = ::File.join(path, 'path-to-resource.json-dynamic.txt')
66
+ assert(File.exist?(file_path))
19
67
  end
20
68
  end
@@ -3,31 +3,33 @@
3
3
 
4
4
  require File.expand_path('../test_helper', __FILE__)
5
5
 
6
- # Simple recursive test
7
- def simple(n)
8
- sleep(1)
9
- n -= 1
10
- return if n == 0
11
- simple(n)
12
- end
6
+ module SimpleRecursion
7
+ # Simple recursive test
8
+ def simple(n)
9
+ sleep(1)
10
+ n -= 1
11
+ return if n == 0
12
+ simple(n)
13
+ end
13
14
 
14
15
 
15
- # More complicated recursive test
16
- def render_partial(i)
17
- sleep(1)
18
- case i
19
- when 0
20
- render_partial(10)
21
- when 1
22
- 2.times do |j|
23
- render_partial(j + 10)
16
+ # More complicated recursive test
17
+ def render_partial(i)
18
+ sleep(1)
19
+ case i
20
+ when 0
21
+ render_partial(10)
22
+ when 1
23
+ 2.times do |j|
24
+ render_partial(j + 10)
25
+ end
24
26
  end
25
27
  end
26
- end
27
28
 
28
- def render
29
- 2.times do |i|
30
- render_partial(i)
29
+ def render
30
+ 2.times do |i|
31
+ render_partial(i)
32
+ end
31
33
  end
32
34
  end
33
35
 
@@ -38,6 +40,8 @@ class RecursiveTest < TestCase
38
40
  RubyProf::measure_mode = RubyProf::WALL_TIME
39
41
  end
40
42
 
43
+ include SimpleRecursion
44
+
41
45
  def test_simple
42
46
  result = RubyProf.profile do
43
47
  simple(2)
@@ -64,9 +68,9 @@ class RecursiveTest < TestCase
64
68
  assert_equal('RecursiveTest#test_simple', call_info.call_sequence)
65
69
  assert_equal(1, call_info.children.length)
66
70
 
67
- # Method 1: Object#simple
71
+ # Method 1: SimpleRecursion#simple
68
72
  method = methods[1]
69
- assert_equal('Object#simple', method.full_name)
73
+ assert_equal('SimpleRecursion#simple', method.full_name)
70
74
  assert_equal(2, method.called)
71
75
  assert_in_delta(2, method.total_time, 0.1)
72
76
  assert_in_delta(0, method.self_time, 0.1)
@@ -77,12 +81,12 @@ class RecursiveTest < TestCase
77
81
 
78
82
  call_info = method.call_infos.first
79
83
  assert_equal(2, call_info.children.length)
80
- assert_equal('RecursiveTest#test_simple->Object#simple', call_info.call_sequence)
84
+ assert_equal('RecursiveTest#test_simple->SimpleRecursion#simple', call_info.call_sequence)
81
85
  assert(!call_info.recursive)
82
86
 
83
87
  call_info = method.call_infos.last
84
88
  assert_equal(1, call_info.children.length)
85
- assert_equal('RecursiveTest#test_simple->Object#simple->Object#simple', call_info.call_sequence)
89
+ assert_equal('RecursiveTest#test_simple->SimpleRecursion#simple->SimpleRecursion#simple', call_info.call_sequence)
86
90
  assert(call_info.recursive)
87
91
 
88
92
  method = methods[2]
@@ -95,12 +99,12 @@ class RecursiveTest < TestCase
95
99
 
96
100
  assert_equal(2, method.call_infos.length)
97
101
  call_info = method.call_infos[0]
98
- assert_equal('RecursiveTest#test_simple->Object#simple->Kernel#sleep', call_info.call_sequence)
102
+ assert_equal('RecursiveTest#test_simple->SimpleRecursion#simple->Kernel#sleep', call_info.call_sequence)
99
103
  assert_equal(0, call_info.children.length)
100
104
  assert(!call_info.recursive)
101
105
 
102
106
  call_info = method.call_infos[1]
103
- assert_equal('RecursiveTest#test_simple->Object#simple->Object#simple->Kernel#sleep', call_info.call_sequence)
107
+ assert_equal('RecursiveTest#test_simple->SimpleRecursion#simple->SimpleRecursion#simple->Kernel#sleep', call_info.call_sequence)
104
108
  assert_equal(0, call_info.children.length)
105
109
  assert(!call_info.recursive)
106
110
  end
@@ -128,7 +132,7 @@ class RecursiveTest < TestCase
128
132
  assert(!call_info.recursive)
129
133
 
130
134
  method = methods[1]
131
- assert_equal('Object#render', method.full_name)
135
+ assert_equal('SimpleRecursion#render', method.full_name)
132
136
  assert_equal(1, method.called)
133
137
  assert_in_delta(5, method.total_time, 0.1)
134
138
  assert_in_delta(0, method.self_time, 0.01)
@@ -137,7 +141,7 @@ class RecursiveTest < TestCase
137
141
 
138
142
  assert_equal(1, method.call_infos.length)
139
143
  call_info = method.call_infos[0]
140
- assert_equal('RecursiveTest#test_cycle->Object#render', call_info.call_sequence)
144
+ assert_equal('RecursiveTest#test_cycle->SimpleRecursion#render', call_info.call_sequence)
141
145
  assert_equal(1, call_info.children.length)
142
146
  assert(!call_info.recursive)
143
147
 
@@ -151,17 +155,17 @@ class RecursiveTest < TestCase
151
155
 
152
156
  assert_equal(2, method.call_infos.length)
153
157
  call_info = method.call_infos[0]
154
- assert_equal('RecursiveTest#test_cycle->Object#render->Integer#times', call_info.call_sequence)
158
+ assert_equal('RecursiveTest#test_cycle->SimpleRecursion#render->Integer#times', call_info.call_sequence)
155
159
  assert_equal(1, call_info.children.length)
156
160
  assert(!call_info.recursive)
157
161
 
158
162
  call_info = method.call_infos[1]
159
- assert_equal('RecursiveTest#test_cycle->Object#render->Integer#times->Object#render_partial->Integer#times', call_info.call_sequence)
163
+ assert_equal('RecursiveTest#test_cycle->SimpleRecursion#render->Integer#times->SimpleRecursion#render_partial->Integer#times', call_info.call_sequence)
160
164
  assert_equal(1, call_info.children.length)
161
165
  assert(call_info.recursive)
162
166
 
163
167
  method = methods[3]
164
- assert_equal('Object#render_partial', method.full_name)
168
+ assert_equal('SimpleRecursion#render_partial', method.full_name)
165
169
  assert_equal(5, method.called)
166
170
  assert_in_delta(5, method.total_time, 0.1)
167
171
  assert_in_delta(0, method.self_time, 0.1)
@@ -170,17 +174,17 @@ class RecursiveTest < TestCase
170
174
 
171
175
  assert_equal(3, method.call_infos.length)
172
176
  call_info = method.call_infos[0]
173
- assert_equal('RecursiveTest#test_cycle->Object#render->Integer#times->Object#render_partial', call_info.call_sequence)
177
+ assert_equal('RecursiveTest#test_cycle->SimpleRecursion#render->Integer#times->SimpleRecursion#render_partial', call_info.call_sequence)
174
178
  assert_equal(3, call_info.children.length)
175
179
  assert(!call_info.recursive)
176
180
 
177
181
  call_info = method.call_infos[1]
178
- assert_equal('RecursiveTest#test_cycle->Object#render->Integer#times->Object#render_partial->Object#render_partial', call_info.call_sequence)
182
+ assert_equal('RecursiveTest#test_cycle->SimpleRecursion#render->Integer#times->SimpleRecursion#render_partial->SimpleRecursion#render_partial', call_info.call_sequence)
179
183
  assert_equal(1, call_info.children.length)
180
184
  assert(call_info.recursive)
181
185
 
182
186
  call_info = method.call_infos[2]
183
- assert_equal('RecursiveTest#test_cycle->Object#render->Integer#times->Object#render_partial->Integer#times->Object#render_partial', call_info.call_sequence)
187
+ assert_equal('RecursiveTest#test_cycle->SimpleRecursion#render->Integer#times->SimpleRecursion#render_partial->Integer#times->SimpleRecursion#render_partial', call_info.call_sequence)
184
188
  assert_equal(1, call_info.children.length)
185
189
  assert(call_info.recursive)
186
190
 
@@ -194,17 +198,17 @@ class RecursiveTest < TestCase
194
198
 
195
199
  assert_equal(3, method.call_infos.length)
196
200
  call_info = method.call_infos[0]
197
- assert_equal('RecursiveTest#test_cycle->Object#render->Integer#times->Object#render_partial->Kernel#sleep', call_info.call_sequence)
201
+ assert_equal('RecursiveTest#test_cycle->SimpleRecursion#render->Integer#times->SimpleRecursion#render_partial->Kernel#sleep', call_info.call_sequence)
198
202
  assert_equal(0, call_info.children.length)
199
203
  assert(!call_info.recursive)
200
204
 
201
205
  call_info = method.call_infos[1]
202
- assert_equal('RecursiveTest#test_cycle->Object#render->Integer#times->Object#render_partial->Object#render_partial->Kernel#sleep', call_info.call_sequence)
206
+ assert_equal('RecursiveTest#test_cycle->SimpleRecursion#render->Integer#times->SimpleRecursion#render_partial->SimpleRecursion#render_partial->Kernel#sleep', call_info.call_sequence)
203
207
  assert_equal(0, call_info.children.length)
204
208
  assert(!call_info.recursive)
205
209
 
206
210
  call_info = method.call_infos[2]
207
- assert_equal('RecursiveTest#test_cycle->Object#render->Integer#times->Object#render_partial->Integer#times->Object#render_partial->Kernel#sleep', call_info.call_sequence)
211
+ assert_equal('RecursiveTest#test_cycle->SimpleRecursion#render->Integer#times->SimpleRecursion#render_partial->Integer#times->SimpleRecursion#render_partial->Kernel#sleep', call_info.call_sequence)
208
212
  assert_equal(0, call_info.children.length)
209
213
  assert(!call_info.recursive)
210
214
  end
@@ -144,3 +144,96 @@ module MemoryTestHelper
144
144
  total
145
145
  end
146
146
  end
147
+
148
+ module PrinterTestHelper
149
+ Metrics = Struct.new(:name, :total, :self_t, :wait, :child, :calls)
150
+ class Metrics
151
+ def pp
152
+ "%s[total: %.2f, self: %.2f, wait: %.2f, child: %.2f, calls: %s]" %
153
+ [name, total, self_t, wait, child, calls]
154
+ end
155
+ end
156
+
157
+ Entry = Struct.new(:total_p, :self_p, :metrics, :parents, :children)
158
+ class Entry
159
+ def child(name)
160
+ children.detect{|m| m.name == name}
161
+ end
162
+
163
+ def parent(name)
164
+ parents.detect{|m| m.name == name}
165
+ end
166
+
167
+ def pp
168
+ res = ""
169
+ res << "NODE (total%%: %.2f, self%%: %.2f) %s\n" % [total_p, self_p, metrics.pp]
170
+ res << " PARENTS:\n"
171
+ parents.each {|m| res << " " + m.pp << "\n"}
172
+ res << " CHILDREN:\n"
173
+ children.each {|m| res << " " + m.pp << "\n"}
174
+ res
175
+ end
176
+ end
177
+
178
+ class MetricsArray < Array
179
+ def metrics_for(name)
180
+ detect {|e| e.metrics.name == name}
181
+ end
182
+
183
+ def pp(io = STDOUT)
184
+ entries = map do |e|
185
+ begin
186
+ e.pp
187
+ rescue
188
+ puts $!.message + e.inspect
189
+ ""
190
+ end
191
+ end
192
+ io.puts entries.join("--------------------------------------------------\n")
193
+ end
194
+
195
+ def self.parse(str)
196
+ res = new
197
+ entry = nil
198
+ relatives = []
199
+ state = :preamble
200
+
201
+ str.each_line do |l|
202
+ line = l.chomp.strip
203
+ if line =~ /-----/
204
+ if state == :preamble
205
+ state = :parsing_parents
206
+ entry = Entry.new
207
+ elsif state == :parsing_parents
208
+ entry = Entry.new
209
+ elsif state == :parsing_children
210
+ entry.children = relatives
211
+ res << entry
212
+ entry = Entry.new
213
+ relatives = []
214
+ state = :parsing_parents
215
+ end
216
+ elsif line =~ /^\s*$/ || line =~ /indicates recursively called methods/
217
+ next
218
+ elsif state != :preamble
219
+ elements = line.split(/\s+/)
220
+ method = elements.pop
221
+ numbers = elements[0..-2].map(&:to_f)
222
+ metrics = Metrics.new(method, *numbers[-4..-1], elements[-1])
223
+ if numbers.size == 6
224
+ entry.metrics = metrics
225
+ entry.total_p = numbers[0]
226
+ entry.self_p = numbers[1]
227
+ entry.parents = relatives
228
+ entry.children = relatives = []
229
+ state = :parsing_children
230
+ res << entry
231
+ else
232
+ relatives << metrics
233
+ end
234
+ end
235
+ end
236
+ res
237
+ end
238
+ end
239
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-prof
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.8
4
+ version: 0.15.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shugo Maeda, Charlie Savage, Roger Pack, Stefan Kaes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-24 00:00:00.000000000 Z
11
+ date: 2015-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 5.5.0
19
+ version: 5.8.3
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 5.5.0
26
+ version: 5.8.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake-compiler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -73,16 +73,67 @@ files:
73
73
  - Rakefile
74
74
  - bin/ruby-prof
75
75
  - bin/ruby-prof-check-trace
76
+ - doc/LICENSE.html
77
+ - doc/README_rdoc.html
78
+ - doc/Rack.html
79
+ - doc/Rack/RubyProf.html
80
+ - doc/RubyProf.html
81
+ - doc/RubyProf/AbstractPrinter.html
82
+ - doc/RubyProf/AggregateCallInfo.html
83
+ - doc/RubyProf/CallInfo.html
84
+ - doc/RubyProf/CallInfoPrinter.html
85
+ - doc/RubyProf/CallInfoVisitor.html
86
+ - doc/RubyProf/CallStackPrinter.html
87
+ - doc/RubyProf/CallTreePrinter.html
88
+ - doc/RubyProf/Cmd.html
89
+ - doc/RubyProf/DotPrinter.html
90
+ - doc/RubyProf/FlatPrinter.html
91
+ - doc/RubyProf/FlatPrinterWithLineNumbers.html
92
+ - doc/RubyProf/GraphHtmlPrinter.html
93
+ - doc/RubyProf/GraphPrinter.html
94
+ - doc/RubyProf/MethodInfo.html
95
+ - doc/RubyProf/MultiPrinter.html
96
+ - doc/RubyProf/Profile.html
97
+ - doc/RubyProf/ProfileTask.html
98
+ - doc/RubyProf/Thread.html
76
99
  - doc/created.rid
77
100
  - doc/css/fonts.css
78
101
  - doc/css/rdoc.css
102
+ - doc/examples/flat_txt.html
103
+ - doc/examples/graph_html.html
104
+ - doc/examples/graph_txt.html
79
105
  - doc/fonts/Lato-Light.ttf
80
106
  - doc/fonts/Lato-LightItalic.ttf
81
107
  - doc/fonts/Lato-Regular.ttf
82
108
  - doc/fonts/Lato-RegularItalic.ttf
83
109
  - doc/fonts/SourceCodePro-Bold.ttf
84
110
  - doc/fonts/SourceCodePro-Regular.ttf
111
+ - doc/images/add.png
112
+ - doc/images/arrow_up.png
113
+ - doc/images/brick.png
114
+ - doc/images/brick_link.png
115
+ - doc/images/bug.png
116
+ - doc/images/bullet_black.png
117
+ - doc/images/bullet_toggle_minus.png
118
+ - doc/images/bullet_toggle_plus.png
119
+ - doc/images/date.png
120
+ - doc/images/delete.png
121
+ - doc/images/find.png
85
122
  - doc/images/loadingAnimation.gif
123
+ - doc/images/macFFBgHack.png
124
+ - doc/images/package.png
125
+ - doc/images/page_green.png
126
+ - doc/images/page_white_text.png
127
+ - doc/images/page_white_width.png
128
+ - doc/images/plugin.png
129
+ - doc/images/ruby.png
130
+ - doc/images/tag_blue.png
131
+ - doc/images/tag_green.png
132
+ - doc/images/transparent.png
133
+ - doc/images/wrench.png
134
+ - doc/images/wrench_orange.png
135
+ - doc/images/zoom.png
136
+ - doc/index.html
86
137
  - doc/js/darkfish.js
87
138
  - doc/js/jquery.js
88
139
  - doc/js/navigation.js
@@ -92,6 +143,7 @@ files:
92
143
  - doc/js/search_index.js.gz
93
144
  - doc/js/searcher.js
94
145
  - doc/js/searcher.js.gz
146
+ - doc/table_of_contents.html
95
147
  - examples/flat.txt
96
148
  - examples/graph.dot
97
149
  - examples/graph.html
@@ -162,6 +214,7 @@ files:
162
214
  - test/exceptions_test.rb
163
215
  - test/exclude_threads_test.rb
164
216
  - test/fiber_test.rb
217
+ - test/issue137_test.rb
165
218
  - test/line_number_test.rb
166
219
  - test/measure_allocations_test.rb
167
220
  - test/measure_cpu_time_test.rb
@@ -177,6 +230,7 @@ files:
177
230
  - test/pause_resume_test.rb
178
231
  - test/prime.rb
179
232
  - test/printers_test.rb
233
+ - test/printing_recursive_graph_test.rb
180
234
  - test/rack_test.rb
181
235
  - test/recursive_test.rb
182
236
  - test/singleton_test.rb
@@ -207,7 +261,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
207
261
  version: '0'
208
262
  requirements: []
209
263
  rubyforge_project:
210
- rubygems_version: 2.4.6
264
+ rubygems_version: 2.4.8
211
265
  signing_key:
212
266
  specification_version: 4
213
267
  summary: Fast Ruby profiler