ruby-prof 0.17.0 → 0.18.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 (185) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGES +500 -482
  3. data/LICENSE +24 -24
  4. data/README.rdoc +487 -485
  5. data/Rakefile +113 -113
  6. data/bin/ruby-prof +345 -345
  7. data/bin/ruby-prof-check-trace +45 -45
  8. data/examples/flat.txt +50 -50
  9. data/examples/graph.dot +84 -84
  10. data/examples/graph.html +823 -823
  11. data/examples/graph.txt +139 -139
  12. data/examples/multi.flat.txt +23 -23
  13. data/examples/multi.graph.html +760 -760
  14. data/examples/multi.grind.dat +114 -114
  15. data/examples/multi.stack.html +547 -547
  16. data/examples/stack.html +547 -547
  17. data/ext/ruby_prof/extconf.rb +68 -68
  18. data/ext/ruby_prof/rp_call_info.c +425 -425
  19. data/ext/ruby_prof/rp_call_info.h +53 -53
  20. data/ext/ruby_prof/rp_measure.c +40 -40
  21. data/ext/ruby_prof/rp_measure.h +45 -45
  22. data/ext/ruby_prof/rp_measure_allocations.c +76 -76
  23. data/ext/ruby_prof/rp_measure_cpu_time.c +136 -136
  24. data/ext/ruby_prof/rp_measure_gc_runs.c +73 -73
  25. data/ext/ruby_prof/rp_measure_gc_time.c +60 -60
  26. data/ext/ruby_prof/rp_measure_memory.c +77 -77
  27. data/ext/ruby_prof/rp_measure_process_time.c +71 -71
  28. data/ext/ruby_prof/rp_measure_wall_time.c +45 -45
  29. data/ext/ruby_prof/rp_method.c +630 -636
  30. data/ext/ruby_prof/rp_method.h +75 -75
  31. data/ext/ruby_prof/rp_stack.c +173 -173
  32. data/ext/ruby_prof/rp_stack.h +63 -63
  33. data/ext/ruby_prof/rp_thread.c +277 -276
  34. data/ext/ruby_prof/rp_thread.h +27 -27
  35. data/ext/ruby_prof/ruby_prof.c +794 -774
  36. data/ext/ruby_prof/ruby_prof.h +60 -59
  37. data/ext/ruby_prof/vc/ruby_prof.sln +20 -21
  38. data/ext/ruby_prof/vc/{ruby_prof_20.vcxproj → ruby_prof.vcxproj} +31 -0
  39. data/lib/ruby-prof.rb +68 -68
  40. data/lib/ruby-prof/aggregate_call_info.rb +76 -76
  41. data/lib/ruby-prof/assets/call_stack_printer.css.html +116 -116
  42. data/lib/ruby-prof/assets/call_stack_printer.js.html +384 -384
  43. data/lib/ruby-prof/call_info.rb +115 -115
  44. data/lib/ruby-prof/call_info_visitor.rb +40 -40
  45. data/lib/ruby-prof/compatibility.rb +179 -178
  46. data/lib/ruby-prof/method_info.rb +121 -121
  47. data/lib/ruby-prof/printers/abstract_printer.rb +104 -103
  48. data/lib/ruby-prof/printers/call_info_printer.rb +41 -41
  49. data/lib/ruby-prof/printers/call_stack_printer.rb +265 -265
  50. data/lib/ruby-prof/printers/call_tree_printer.rb +143 -143
  51. data/lib/ruby-prof/printers/dot_printer.rb +132 -132
  52. data/lib/ruby-prof/printers/flat_printer.rb +70 -70
  53. data/lib/ruby-prof/printers/flat_printer_with_line_numbers.rb +83 -83
  54. data/lib/ruby-prof/printers/graph_html_printer.rb +249 -249
  55. data/lib/ruby-prof/printers/graph_printer.rb +116 -116
  56. data/lib/ruby-prof/printers/multi_printer.rb +84 -84
  57. data/lib/ruby-prof/profile.rb +26 -26
  58. data/lib/ruby-prof/profile/exclude_common_methods.rb +207 -201
  59. data/lib/ruby-prof/profile/legacy_method_elimination.rb +50 -49
  60. data/lib/ruby-prof/rack.rb +174 -174
  61. data/lib/ruby-prof/task.rb +147 -147
  62. data/lib/ruby-prof/thread.rb +35 -35
  63. data/lib/ruby-prof/version.rb +3 -3
  64. data/lib/unprof.rb +10 -10
  65. data/ruby-prof.gemspec +58 -58
  66. data/test/abstract_printer_test.rb +53 -0
  67. data/test/aggregate_test.rb +136 -136
  68. data/test/basic_test.rb +128 -128
  69. data/test/block_test.rb +74 -74
  70. data/test/call_info_test.rb +78 -78
  71. data/test/call_info_visitor_test.rb +31 -31
  72. data/test/duplicate_names_test.rb +32 -32
  73. data/test/dynamic_method_test.rb +55 -55
  74. data/test/enumerable_test.rb +21 -21
  75. data/test/exceptions_test.rb +24 -16
  76. data/test/exclude_methods_test.rb +146 -146
  77. data/test/exclude_threads_test.rb +53 -53
  78. data/test/fiber_test.rb +79 -79
  79. data/test/issue137_test.rb +63 -63
  80. data/test/line_number_test.rb +80 -80
  81. data/test/measure_allocations_test.rb +26 -26
  82. data/test/measure_cpu_time_test.rb +212 -213
  83. data/test/measure_gc_runs_test.rb +32 -32
  84. data/test/measure_gc_time_test.rb +36 -36
  85. data/test/measure_memory_test.rb +33 -33
  86. data/test/measure_process_time_test.rb +61 -63
  87. data/test/measure_wall_time_test.rb +255 -255
  88. data/test/method_elimination_test.rb +84 -84
  89. data/test/module_test.rb +45 -45
  90. data/test/multi_printer_test.rb +104 -104
  91. data/test/no_method_class_test.rb +15 -15
  92. data/test/pause_resume_test.rb +166 -166
  93. data/test/prime.rb +54 -54
  94. data/test/printers_test.rb +275 -275
  95. data/test/printing_recursive_graph_test.rb +127 -127
  96. data/test/rack_test.rb +157 -157
  97. data/test/recursive_test.rb +215 -215
  98. data/test/singleton_test.rb +38 -38
  99. data/test/stack_printer_test.rb +77 -78
  100. data/test/stack_test.rb +138 -138
  101. data/test/start_stop_test.rb +112 -112
  102. data/test/test_helper.rb +267 -275
  103. data/test/thread_test.rb +187 -187
  104. data/test/unique_call_path_test.rb +202 -202
  105. data/test/yarv_test.rb +55 -55
  106. metadata +17 -96
  107. data/doc/LICENSE.html +0 -115
  108. data/doc/README_rdoc.html +0 -637
  109. data/doc/Rack.html +0 -96
  110. data/doc/Rack/RubyProf.html +0 -233
  111. data/doc/Rack/RubyProf/RackProfiler.html +0 -343
  112. data/doc/RubyProf.html +0 -974
  113. data/doc/RubyProf/AbstractPrinter.html +0 -625
  114. data/doc/RubyProf/AggregateCallInfo.html +0 -552
  115. data/doc/RubyProf/CallInfo.html +0 -579
  116. data/doc/RubyProf/CallInfoPrinter.html +0 -121
  117. data/doc/RubyProf/CallInfoVisitor.html +0 -199
  118. data/doc/RubyProf/CallStackPrinter.html +0 -1127
  119. data/doc/RubyProf/CallTreePrinter.html +0 -725
  120. data/doc/RubyProf/Cmd.html +0 -637
  121. data/doc/RubyProf/DeprecationWarnings.html +0 -148
  122. data/doc/RubyProf/DotPrinter.html +0 -258
  123. data/doc/RubyProf/FlatPrinter.html +0 -164
  124. data/doc/RubyProf/FlatPrinterWithLineNumbers.html +0 -210
  125. data/doc/RubyProf/GraphHtmlPrinter.html +0 -558
  126. data/doc/RubyProf/GraphPrinter.html +0 -140
  127. data/doc/RubyProf/MethodInfo.html +0 -676
  128. data/doc/RubyProf/MultiPrinter.html +0 -574
  129. data/doc/RubyProf/Profile.html +0 -908
  130. data/doc/RubyProf/Profile/ExcludeCommonMethods.html +0 -411
  131. data/doc/RubyProf/Profile/LegacyMethodElimination.html +0 -158
  132. data/doc/RubyProf/ProfileTask.html +0 -491
  133. data/doc/RubyProf/Thread.html +0 -275
  134. data/doc/created.rid +0 -33
  135. data/doc/css/fonts.css +0 -167
  136. data/doc/css/rdoc.css +0 -590
  137. data/doc/examples/flat_txt.html +0 -139
  138. data/doc/examples/graph_html.html +0 -910
  139. data/doc/examples/graph_txt.html +0 -248
  140. data/doc/fonts/Lato-Light.ttf +0 -0
  141. data/doc/fonts/Lato-LightItalic.ttf +0 -0
  142. data/doc/fonts/Lato-Regular.ttf +0 -0
  143. data/doc/fonts/Lato-RegularItalic.ttf +0 -0
  144. data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
  145. data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
  146. data/doc/images/add.png +0 -0
  147. data/doc/images/arrow_up.png +0 -0
  148. data/doc/images/brick.png +0 -0
  149. data/doc/images/brick_link.png +0 -0
  150. data/doc/images/bug.png +0 -0
  151. data/doc/images/bullet_black.png +0 -0
  152. data/doc/images/bullet_toggle_minus.png +0 -0
  153. data/doc/images/bullet_toggle_plus.png +0 -0
  154. data/doc/images/date.png +0 -0
  155. data/doc/images/delete.png +0 -0
  156. data/doc/images/find.png +0 -0
  157. data/doc/images/loadingAnimation.gif +0 -0
  158. data/doc/images/macFFBgHack.png +0 -0
  159. data/doc/images/package.png +0 -0
  160. data/doc/images/page_green.png +0 -0
  161. data/doc/images/page_white_text.png +0 -0
  162. data/doc/images/page_white_width.png +0 -0
  163. data/doc/images/plugin.png +0 -0
  164. data/doc/images/ruby.png +0 -0
  165. data/doc/images/tag_blue.png +0 -0
  166. data/doc/images/tag_green.png +0 -0
  167. data/doc/images/transparent.png +0 -0
  168. data/doc/images/wrench.png +0 -0
  169. data/doc/images/wrench_orange.png +0 -0
  170. data/doc/images/zoom.png +0 -0
  171. data/doc/index.html +0 -666
  172. data/doc/js/darkfish.js +0 -161
  173. data/doc/js/jquery.js +0 -4
  174. data/doc/js/navigation.js +0 -142
  175. data/doc/js/navigation.js.gz +0 -0
  176. data/doc/js/search.js +0 -109
  177. data/doc/js/search_index.js +0 -1
  178. data/doc/js/search_index.js.gz +0 -0
  179. data/doc/js/searcher.js +0 -229
  180. data/doc/js/searcher.js.gz +0 -0
  181. data/doc/table_of_contents.html +0 -1052
  182. data/examples/cachegrind.out.1 +0 -114
  183. data/examples/cachegrind.out.1.32313213 +0 -114
  184. data/ext/ruby_prof/vc/ruby_prof_18.vcxproj +0 -108
  185. data/ext/ruby_prof/vc/ruby_prof_19.vcxproj +0 -110
@@ -1,53 +1,53 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path('../test_helper', __FILE__)
5
-
6
-
7
- # -- Tests ----
8
- class ExcludeThreadsTest < TestCase
9
- def test_exclude_threads
10
-
11
- def thread1_proc
12
- sleep(0.5)
13
- sleep(2)
14
- end
15
-
16
- def thread2_proc
17
- sleep(0.5)
18
- sleep(2)
19
- end
20
-
21
- thread1 = Thread.new do
22
- thread1_proc
23
- end
24
-
25
- thread2 = Thread.new do
26
- thread2_proc
27
- end
28
-
29
- # exclude_threads already includes the minitest thread pool
30
- RubyProf.exclude_threads += [ thread2 ]
31
-
32
- RubyProf.start
33
-
34
- thread1.join
35
- thread2.join
36
-
37
- result = RubyProf.stop
38
-
39
- assert_equal(2, result.threads.length)
40
-
41
- output = Array.new
42
- result.threads.each do |thread|
43
- thread.methods.each do | m |
44
- if m.full_name.index("ExcludeThreadsTest#thread") == 0
45
- output.push(m.full_name)
46
- end
47
- end
48
- end
49
-
50
- assert_equal(1, output.length)
51
- assert_equal("ExcludeThreadsTest#thread1_proc", output[0])
52
- end
53
- end
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ require File.expand_path('../test_helper', __FILE__)
5
+
6
+
7
+ # -- Tests ----
8
+ class ExcludeThreadsTest < TestCase
9
+ def test_exclude_threads
10
+
11
+ def thread1_proc
12
+ sleep(0.5)
13
+ sleep(2)
14
+ end
15
+
16
+ def thread2_proc
17
+ sleep(0.5)
18
+ sleep(2)
19
+ end
20
+
21
+ thread1 = Thread.new do
22
+ thread1_proc
23
+ end
24
+
25
+ thread2 = Thread.new do
26
+ thread2_proc
27
+ end
28
+
29
+ # exclude_threads already includes the minitest thread pool
30
+ RubyProf.exclude_threads += [ thread2 ]
31
+
32
+ RubyProf.start
33
+
34
+ thread1.join
35
+ thread2.join
36
+
37
+ result = RubyProf.stop
38
+
39
+ assert_equal(2, result.threads.length)
40
+
41
+ output = Array.new
42
+ result.threads.each do |thread|
43
+ thread.methods.each do | m |
44
+ if m.full_name.index("ExcludeThreadsTest#thread") == 0
45
+ output.push(m.full_name)
46
+ end
47
+ end
48
+ end
49
+
50
+ assert_equal(1, output.length)
51
+ assert_equal("ExcludeThreadsTest#thread1_proc", output[0])
52
+ end
53
+ end
@@ -1,79 +1,79 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path('../test_helper', __FILE__)
5
- require 'timeout'
6
- require 'set'
7
- begin
8
- require 'fiber'
9
- rescue LoadError
10
- end
11
-
12
- # -- Tests ----
13
- class FiberTest < TestCase
14
-
15
- def fiber_test
16
- @fiber_ids << Fiber.current.object_id
17
- enum = Enumerator.new do |yielder|
18
- [1,2].each do |x|
19
- @fiber_ids << Fiber.current.object_id
20
- sleep 0.1
21
- yielder.yield x
22
- end
23
- end
24
- while true
25
- begin
26
- enum.next
27
- rescue StopIteration
28
- break
29
- end
30
- end
31
- sleep 0.1
32
- end
33
-
34
- def setup
35
- # Need to use wall time for this test due to the sleep calls
36
- RubyProf::measure_mode = RubyProf::WALL_TIME
37
- @fiber_ids = Set.new
38
- @root_fiber = Fiber.current.object_id
39
- @thread_id = Thread.current.object_id
40
- end
41
-
42
- def test_fibers
43
- result = RubyProf.profile { fiber_test }
44
- profiled_fiber_ids = result.threads.map(&:fiber_id)
45
- assert_equal(2, result.threads.length)
46
- assert_equal([@thread_id], result.threads.map(&:id).uniq)
47
- assert_equal(@fiber_ids, Set.new(profiled_fiber_ids))
48
-
49
- assert profiled_fiber_ids.include?(@root_fiber)
50
- assert(root_fiber_profile = result.threads.detect{|t| t.fiber_id == @root_fiber})
51
- assert(enum_fiber_profile = result.threads.detect{|t| t.fiber_id != @root_fiber})
52
-
53
- assert_in_delta(0.3, root_fiber_profile.total_time, 0.05)
54
- assert_in_delta(0.2, enum_fiber_profile.total_time, 0.05)
55
-
56
- assert(method_next = root_fiber_profile.methods.detect{|m| m.full_name == "Enumerator#next"})
57
- assert(method_each = enum_fiber_profile.methods.detect{|m| m.full_name == "Enumerator#each"})
58
-
59
- assert_in_delta(0.2, method_next.total_time, 0.05)
60
- assert_in_delta(0.2, method_each.total_time, 0.05)
61
- end
62
-
63
- def test_merged_fibers
64
- result = RubyProf.profile(merge_fibers: true) { fiber_test }
65
- assert_equal(1, result.threads.length)
66
-
67
- profile = result.threads.first
68
- assert_equal 0, profile.fiber_id
69
-
70
- assert_in_delta(0.3, profile.total_time, 0.05)
71
-
72
- assert(method_next = profile.methods.detect{|m| m.full_name == "Enumerator#next"})
73
- assert(method_each = profile.methods.detect{|m| m.full_name == "Enumerator#each"})
74
-
75
- assert_in_delta(0.2, method_next.total_time, 0.05)
76
- assert_in_delta(0.2, method_each.total_time, 0.05)
77
- end
78
-
79
- end
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ require File.expand_path('../test_helper', __FILE__)
5
+ require 'timeout'
6
+ require 'set'
7
+ begin
8
+ require 'fiber'
9
+ rescue LoadError
10
+ end
11
+
12
+ # -- Tests ----
13
+ class FiberTest < TestCase
14
+
15
+ def fiber_test
16
+ @fiber_ids << Fiber.current.object_id
17
+ enum = Enumerator.new do |yielder|
18
+ [1,2].each do |x|
19
+ @fiber_ids << Fiber.current.object_id
20
+ sleep 0.1
21
+ yielder.yield x
22
+ end
23
+ end
24
+ while true
25
+ begin
26
+ enum.next
27
+ rescue StopIteration
28
+ break
29
+ end
30
+ end
31
+ sleep 0.1
32
+ end
33
+
34
+ def setup
35
+ # Need to use wall time for this test due to the sleep calls
36
+ RubyProf::measure_mode = RubyProf::WALL_TIME
37
+ @fiber_ids = Set.new
38
+ @root_fiber = Fiber.current.object_id
39
+ @thread_id = Thread.current.object_id
40
+ end
41
+
42
+ def test_fibers
43
+ result = RubyProf.profile { fiber_test }
44
+ profiled_fiber_ids = result.threads.map(&:fiber_id)
45
+ assert_equal(2, result.threads.length)
46
+ assert_equal([@thread_id], result.threads.map(&:id).uniq)
47
+ assert_equal(@fiber_ids, Set.new(profiled_fiber_ids))
48
+
49
+ assert profiled_fiber_ids.include?(@root_fiber)
50
+ assert(root_fiber_profile = result.threads.detect{|t| t.fiber_id == @root_fiber})
51
+ assert(enum_fiber_profile = result.threads.detect{|t| t.fiber_id != @root_fiber})
52
+
53
+ assert_in_delta(0.3, root_fiber_profile.total_time, 0.05)
54
+ assert_in_delta(0.2, enum_fiber_profile.total_time, 0.05)
55
+
56
+ assert(method_next = root_fiber_profile.methods.detect{|m| m.full_name == "Enumerator#next"})
57
+ assert(method_each = enum_fiber_profile.methods.detect{|m| m.full_name == "Enumerator#each"})
58
+
59
+ assert_in_delta(0.2, method_next.total_time, 0.05)
60
+ assert_in_delta(0.2, method_each.total_time, 0.05)
61
+ end
62
+
63
+ def test_merged_fibers
64
+ result = RubyProf.profile(merge_fibers: true) { fiber_test }
65
+ assert_equal(1, result.threads.length)
66
+
67
+ profile = result.threads.first
68
+ assert_equal 0, profile.fiber_id
69
+
70
+ assert_in_delta(0.3, profile.total_time, 0.05)
71
+
72
+ assert(method_next = profile.methods.detect{|m| m.full_name == "Enumerator#next"})
73
+ assert(method_each = profile.methods.detect{|m| m.full_name == "Enumerator#each"})
74
+
75
+ assert_in_delta(0.2, method_next.total_time, 0.05)
76
+ assert_in_delta(0.2, method_each.total_time, 0.05)
77
+ end
78
+
79
+ end
@@ -1,63 +1,63 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path('../test_helper', __FILE__)
5
-
6
- # issue 137 is about correctly attributing time of recursive children
7
-
8
- class RecursiveChildrenTest < TestCase
9
- class SlowClass
10
- def time_sink
11
- 1234567890 ** 100 == 0
12
- end
13
- end
14
-
15
- class SlowSearcher
16
- def do_find(slow_objects)
17
- slow_objects.find(&:time_sink)
18
- end
19
- end
20
-
21
- class MainClass
22
- def self.main_method
23
- slow_objects = [SlowClass.new] * 100_000
24
- slow_searcher = SlowSearcher.new
25
- slow_searcher.do_find(slow_objects)
26
- end
27
- end
28
-
29
- include PrinterTestHelper
30
-
31
- def setup
32
- # Need to use wall time for this test due to the sleep calls
33
- RubyProf::measure_mode = RubyProf::WALL_TIME
34
- end
35
-
36
- def test_simple
37
- result = RubyProf.profile do
38
- # make array each recursive
39
- [1].each do
40
- MainClass.main_method
41
- end
42
- end
43
-
44
- # methods = result.threads.first.methods.sort.reverse
45
-
46
- printer = RubyProf::GraphPrinter.new(result)
47
-
48
- buffer = ''
49
- printer.print(StringIO.new(buffer))
50
-
51
- puts buffer if ENV['SHOW_RUBY_PROF_PRINTER_OUTPUT'] == "1"
52
-
53
- parsed_output = MetricsArray.parse(buffer)
54
-
55
- assert( enum_find = parsed_output.metrics_for("Enumerable#find") )
56
- assert( array_each = enum_find.child("Array#each") )
57
-
58
- assert_operator enum_find.metrics.total, :>=, array_each.total
59
- assert_operator enum_find.metrics.total, :>, 0
60
- assert_in_delta enum_find.metrics.total, array_each.total, 0.02
61
- end
62
-
63
- end
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ require File.expand_path('../test_helper', __FILE__)
5
+
6
+ # issue 137 is about correctly attributing time of recursive children
7
+
8
+ class RecursiveChildrenTest < TestCase
9
+ class SlowClass
10
+ def time_sink
11
+ 1234567890 ** 100 == 0
12
+ end
13
+ end
14
+
15
+ class SlowSearcher
16
+ def do_find(slow_objects)
17
+ slow_objects.find(&:time_sink)
18
+ end
19
+ end
20
+
21
+ class MainClass
22
+ def self.main_method
23
+ slow_objects = [SlowClass.new] * 100_000
24
+ slow_searcher = SlowSearcher.new
25
+ slow_searcher.do_find(slow_objects)
26
+ end
27
+ end
28
+
29
+ include PrinterTestHelper
30
+
31
+ def setup
32
+ # Need to use wall time for this test due to the sleep calls
33
+ RubyProf::measure_mode = RubyProf::WALL_TIME
34
+ end
35
+
36
+ def test_simple
37
+ result = RubyProf.profile do
38
+ # make array each recursive
39
+ [1].each do
40
+ MainClass.main_method
41
+ end
42
+ end
43
+
44
+ # methods = result.threads.first.methods.sort.reverse
45
+
46
+ printer = RubyProf::GraphPrinter.new(result)
47
+
48
+ buffer = ''
49
+ printer.print(StringIO.new(buffer))
50
+
51
+ puts buffer if ENV['SHOW_RUBY_PROF_PRINTER_OUTPUT'] == "1"
52
+
53
+ parsed_output = MetricsArray.parse(buffer)
54
+
55
+ assert( enum_find = parsed_output.metrics_for("Enumerable#find") )
56
+ assert( array_each = enum_find.child("Array#each") )
57
+
58
+ assert_operator enum_find.metrics.total, :>=, array_each.total
59
+ assert_operator enum_find.metrics.total, :>, 0
60
+ assert_in_delta enum_find.metrics.total, array_each.total, 0.02
61
+ end
62
+
63
+ end
@@ -1,80 +1,80 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path('../test_helper', __FILE__)
5
-
6
- class LineNumbers
7
- def method1
8
- end
9
-
10
- def method2
11
- method1
12
- end
13
-
14
- def method3
15
- sleep(1)
16
- end
17
- end
18
-
19
- # -- Tests ----
20
- class LineNumbersTest < TestCase
21
- def test_function_line_no
22
- numbers = LineNumbers.new
23
-
24
- result = RubyProf.profile do
25
- numbers.method2
26
- end
27
-
28
- methods = result.threads.first.methods.sort.reverse
29
- assert_equal(3, methods.length)
30
-
31
- method = methods[0]
32
- assert_equal('LineNumbersTest#test_function_line_no', method.full_name)
33
- assert_equal(25, method.line)
34
-
35
- method = methods[1]
36
- assert_equal('LineNumbers#method2', method.full_name)
37
- if RUBY_VERSION < "2.5"
38
- assert_equal(10, method.line)
39
- else
40
- assert_equal(11, method.line)
41
- end
42
-
43
- method = methods[2]
44
- assert_equal('LineNumbers#method1', method.full_name)
45
- assert_equal(7, method.line)
46
- end
47
-
48
- def test_c_function
49
- numbers = LineNumbers.new
50
-
51
- result = RubyProf.profile do
52
- numbers.method3
53
- end
54
-
55
- methods = result.threads.first.methods.sort_by {|method| method.full_name}
56
- assert_equal(3, methods.length)
57
-
58
- # Methods:
59
- # LineNumbers#method3
60
- # LineNumbersTest#test_c_function
61
- # Kernel#sleep
62
-
63
- method = methods[0]
64
- assert_equal('Kernel#sleep', method.full_name)
65
- assert_equal(0, method.line)
66
-
67
- method = methods[1]
68
- assert_equal('LineNumbers#method3', method.full_name)
69
- if RUBY_VERSION < "2.5"
70
- assert_equal(14, method.line)
71
- else
72
- assert_equal(15, method.line)
73
- end
74
-
75
- method = methods[2]
76
- assert_equal('LineNumbersTest#test_c_function', method.full_name)
77
- assert_equal(52, method.line)
78
- end
79
-
80
- end
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ require File.expand_path('../test_helper', __FILE__)
5
+
6
+ class LineNumbers
7
+ def method1
8
+ end
9
+
10
+ def method2
11
+ method1
12
+ end
13
+
14
+ def method3
15
+ sleep(1)
16
+ end
17
+ end
18
+
19
+ # -- Tests ----
20
+ class LineNumbersTest < TestCase
21
+ def test_function_line_no
22
+ numbers = LineNumbers.new
23
+
24
+ result = RubyProf.profile do
25
+ numbers.method2
26
+ end
27
+
28
+ methods = result.threads.first.methods.sort.reverse
29
+ assert_equal(3, methods.length)
30
+
31
+ method = methods[0]
32
+ assert_equal('LineNumbersTest#test_function_line_no', method.full_name)
33
+ assert_equal(25, method.line)
34
+
35
+ method = methods[1]
36
+ assert_equal('LineNumbers#method2', method.full_name)
37
+ if RUBY_VERSION < "2.5"
38
+ assert_equal(10, method.line)
39
+ else
40
+ assert_equal(11, method.line)
41
+ end
42
+
43
+ method = methods[2]
44
+ assert_equal('LineNumbers#method1', method.full_name)
45
+ assert_equal(7, method.line)
46
+ end
47
+
48
+ def test_c_function
49
+ numbers = LineNumbers.new
50
+
51
+ result = RubyProf.profile do
52
+ numbers.method3
53
+ end
54
+
55
+ methods = result.threads.first.methods.sort_by {|method| method.full_name}
56
+ assert_equal(3, methods.length)
57
+
58
+ # Methods:
59
+ # LineNumbers#method3
60
+ # LineNumbersTest#test_c_function
61
+ # Kernel#sleep
62
+
63
+ method = methods[0]
64
+ assert_equal('Kernel#sleep', method.full_name)
65
+ assert_equal(0, method.line)
66
+
67
+ method = methods[1]
68
+ assert_equal('LineNumbers#method3', method.full_name)
69
+ if RUBY_VERSION < "2.5"
70
+ assert_equal(14, method.line)
71
+ else
72
+ assert_equal(15, method.line)
73
+ end
74
+
75
+ method = methods[2]
76
+ assert_equal('LineNumbersTest#test_c_function', method.full_name)
77
+ assert_equal(52, method.line)
78
+ end
79
+
80
+ end