ruby-prof 0.12.1 → 0.12.2

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 (109) hide show
  1. data/CHANGES +5 -1
  2. data/Rakefile +25 -7
  3. data/bin/ruby-prof +2 -2
  4. data/doc/LICENSE.html +155 -0
  5. data/doc/README_rdoc.html +640 -0
  6. data/doc/Rack.html +167 -0
  7. data/doc/Rack/RubyProf.html +319 -0
  8. data/doc/RubyProf.html +999 -0
  9. data/doc/RubyProf/AbstractPrinter.html +580 -0
  10. data/doc/RubyProf/AggregateCallInfo.html +570 -0
  11. data/doc/RubyProf/CallInfo.html +512 -0
  12. data/doc/RubyProf/CallInfoPrinter.html +190 -0
  13. data/doc/RubyProf/CallInfoVisitor.html +332 -0
  14. data/doc/RubyProf/CallStackPrinter.html +1597 -0
  15. data/doc/RubyProf/CallTreePrinter.html +413 -0
  16. data/doc/RubyProf/Cmd.html +669 -0
  17. data/doc/RubyProf/DotPrinter.html +312 -0
  18. data/doc/RubyProf/FlatPrinter.html +229 -0
  19. data/doc/RubyProf/FlatPrinterWithLineNumbers.html +267 -0
  20. data/doc/RubyProf/GraphHtmlPrinter.html +622 -0
  21. data/doc/RubyProf/GraphPrinter.html +209 -0
  22. data/doc/RubyProf/MethodInfo.html +713 -0
  23. data/doc/RubyProf/MultiPrinter.html +407 -0
  24. data/doc/RubyProf/Profile.html +821 -0
  25. data/doc/RubyProf/ProfileTask.html +532 -0
  26. data/doc/RubyProf/Test.html +578 -0
  27. data/doc/RubyProf/Thread.html +262 -0
  28. data/doc/created.rid +31 -0
  29. data/doc/examples/flat_txt.html +191 -0
  30. data/doc/examples/graph_txt.html +305 -0
  31. data/doc/images/add.png +0 -0
  32. data/doc/images/brick.png +0 -0
  33. data/doc/images/brick_link.png +0 -0
  34. data/doc/images/bug.png +0 -0
  35. data/doc/images/bullet_black.png +0 -0
  36. data/doc/images/bullet_toggle_minus.png +0 -0
  37. data/doc/images/bullet_toggle_plus.png +0 -0
  38. data/doc/images/date.png +0 -0
  39. data/doc/images/delete.png +0 -0
  40. data/doc/images/find.png +0 -0
  41. data/doc/images/loadingAnimation.gif +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 +639 -0
  56. data/doc/js/darkfish.js +153 -0
  57. data/doc/js/jquery.js +18 -0
  58. data/doc/js/navigation.js +142 -0
  59. data/doc/js/search.js +94 -0
  60. data/doc/js/search_index.js +1 -0
  61. data/doc/js/searcher.js +228 -0
  62. data/doc/rdoc.css +543 -0
  63. data/doc/table_of_contents.html +462 -0
  64. data/examples/empty.png +0 -0
  65. data/examples/minus.png +0 -0
  66. data/examples/plus.png +0 -0
  67. data/ext/ruby_prof/extconf.rb +5 -1
  68. data/ext/ruby_prof/rp_call_info.c +1 -1
  69. data/ext/ruby_prof/rp_measure_gc_time.c +6 -10
  70. data/ext/ruby_prof/rp_measure_memory.c +0 -1
  71. data/ext/ruby_prof/rp_stack.c +0 -5
  72. data/ext/ruby_prof/vc/ruby_prof_18.vcxproj +0 -2
  73. data/ext/ruby_prof/vc/ruby_prof_19.vcxproj +1 -3
  74. data/ext/ruby_prof/vc/ruby_prof_20.vcxproj +1 -3
  75. data/ext/ruby_prof/version.h +2 -2
  76. data/lib/ruby-prof/compatibility.rb +8 -3
  77. data/lib/ruby-prof/images/empty.png +0 -0
  78. data/lib/ruby-prof/images/minus.png +0 -0
  79. data/lib/ruby-prof/images/plus.png +0 -0
  80. data/lib/ruby-prof/task.rb +0 -0
  81. data/ruby-prof.gemspec +2 -1
  82. data/test/aggregate_test.rb +0 -0
  83. data/test/basic_test.rb +0 -0
  84. data/test/duplicate_names_test.rb +0 -0
  85. data/test/dynamic_method_test.rb +8 -1
  86. data/test/enumerable_test.rb +0 -0
  87. data/test/exceptions_test.rb +0 -0
  88. data/test/exclude_threads_test.rb +0 -0
  89. data/test/exec_test.rb +0 -0
  90. data/test/line_number_test.rb +0 -0
  91. data/test/measure_gc_runs_test.rb +4 -1
  92. data/test/measure_gc_time_test.rb +10 -3
  93. data/test/measure_memory_test.rb +3 -8
  94. data/test/measure_process_time_test.rb +10 -4
  95. data/test/method_elimination_test.rb +1 -2
  96. data/test/module_test.rb +0 -0
  97. data/test/multi_printer_test.rb +5 -6
  98. data/test/no_method_class_test.rb +0 -0
  99. data/test/pause_resume_test.rb +6 -8
  100. data/test/printers_test.rb +0 -0
  101. data/test/recursive_test.rb +0 -0
  102. data/test/singleton_test.rb +0 -0
  103. data/test/stack_printer_test.rb +8 -5
  104. data/test/stack_test.rb +0 -0
  105. data/test/start_stop_test.rb +0 -0
  106. data/test/test_helper.rb +16 -4
  107. data/test/thread_test.rb +0 -0
  108. data/test/unique_call_path_test.rb +0 -0
  109. metadata +90 -17
data/examples/empty.png CHANGED
File without changes
data/examples/minus.png CHANGED
File without changes
data/examples/plus.png CHANGED
File without changes
@@ -34,6 +34,10 @@ def add_define(name, value = nil)
34
34
  end
35
35
  end
36
36
 
37
+ # if have_func("rb_gc_enable_stats")
38
+ # add_define("TOGGLE_GC_STATS", 1)
39
+ # end
40
+
37
41
  require 'rubygems'
38
42
  unless Gem.win_platform? || RUBY_PLATFORM =~ /darwin/
39
43
  $LDFLAGS += " -lrt" # for clock_gettime
@@ -50,4 +54,4 @@ if RUBY_VERSION > "1.9"
50
54
  add_define("THREADS_INHERIT_EVENT_FLAGS", (threads.size == 2) ? "1" : "0")
51
55
  end
52
56
 
53
- create_makefile("ruby_prof")
57
+ create_makefile("ruby_prof")
@@ -48,7 +48,7 @@ static void
48
48
  prof_call_info_free(prof_call_info_t *call_info)
49
49
  {
50
50
  prof_call_info_ruby_gc_free(call_info);
51
- xfree(call_info->call_infos);
51
+ st_free_table(call_info->call_infos);
52
52
  xfree(call_info);
53
53
  }
54
54
 
@@ -17,16 +17,16 @@ measure_gc_time()
17
17
  {
18
18
  #if defined(HAVE_RB_GC_TIME)
19
19
  #define MEASURE_GC_TIME_ENABLED Qtrue
20
- const int conversion = 1000000;
20
+ const double conversion = 1000000.0;
21
21
  #if HAVE_LONG_LONG
22
- return NUM2LL(rb_gc_time() / conversion);
22
+ return NUM2LL(rb_gc_time()) / conversion;
23
23
  #else
24
- return NUM2LONG(rb_gc_time() / conversion));
24
+ return NUM2LONG(rb_gc_time()) / conversion;
25
25
  #endif
26
26
 
27
27
  #else
28
28
  #define MEASURE_GC_TIME_ENABLED Qfalse
29
- return 0;
29
+ return 0.0;
30
30
  #endif
31
31
  }
32
32
 
@@ -40,15 +40,11 @@ prof_measurer_t* prof_measurer_gc_time()
40
40
  /* call-seq:
41
41
  measure -> float
42
42
 
43
- Returns the number of GC runs.*/
43
+ Returns the time spent performing GC.*/
44
44
  static VALUE
45
45
  prof_measure_gc_time(VALUE self)
46
46
  {
47
- #if defined(HAVE_LONG_LONG)
48
- return ULL2NUM(measure_gc_time());
49
- #else
50
- return ULONG2NUM(measure_gc_time());
51
- #endif
47
+ return rb_float_new(measure_gc_time());
52
48
  }
53
49
 
54
50
  void rp_init_measure_gc_time()
@@ -25,7 +25,6 @@ static double
25
25
  measure_memory()
26
26
  {
27
27
  #if defined(HAVE_RB_GC_ALLOCATED_SIZE)
28
- #define TOGGLE_GC_STATS 1
29
28
  #define MEASURE_MEMORY_ENABLED Qtrue
30
29
  #if defined(HAVE_LONG_LONG)
31
30
  return NUM2LL(rb_gc_allocated_size()) / 1024.0;
@@ -84,11 +84,6 @@ prof_stack_pop(prof_stack_t *stack, double measurement)
84
84
 
85
85
  double total_time;
86
86
  double self_time;
87
- #ifdef _MSC_VER
88
- BOOL frame_paused;
89
- #else
90
- _Bool frame_paused;
91
- #endif
92
87
 
93
88
  /* Frame can be null. This can happen if RubProf.start is called from
94
89
  a method that exits. And it can happen if an exception is raised
@@ -44,14 +44,12 @@
44
44
  <ConfigurationType>DynamicLibrary</ConfigurationType>
45
45
  <UseDebugLibraries>true</UseDebugLibraries>
46
46
  <CharacterSet>Unicode</CharacterSet>
47
- <PlatformToolset>v110</PlatformToolset>
48
47
  </PropertyGroup>
49
48
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
50
49
  <ConfigurationType>DynamicLibrary</ConfigurationType>
51
50
  <UseDebugLibraries>false</UseDebugLibraries>
52
51
  <WholeProgramOptimization>true</WholeProgramOptimization>
53
52
  <CharacterSet>Unicode</CharacterSet>
54
- <PlatformToolset>v110</PlatformToolset>
55
53
  </PropertyGroup>
56
54
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
57
55
  <ImportGroup Label="ExtensionSettings">
@@ -20,14 +20,12 @@
20
20
  <ConfigurationType>DynamicLibrary</ConfigurationType>
21
21
  <UseDebugLibraries>true</UseDebugLibraries>
22
22
  <CharacterSet>Unicode</CharacterSet>
23
- <PlatformToolset>v110</PlatformToolset>
24
23
  </PropertyGroup>
25
24
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
26
25
  <ConfigurationType>DynamicLibrary</ConfigurationType>
27
26
  <UseDebugLibraries>false</UseDebugLibraries>
28
27
  <WholeProgramOptimization>true</WholeProgramOptimization>
29
28
  <CharacterSet>Unicode</CharacterSet>
30
- <PlatformToolset>v110</PlatformToolset>
31
29
  </PropertyGroup>
32
30
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
33
31
  <ImportGroup Label="ExtensionSettings">
@@ -55,7 +53,7 @@
55
53
  <WarningLevel>Level3</WarningLevel>
56
54
  <Optimization>Disabled</Optimization>
57
55
  <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RUBY_PROF_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
58
- <AdditionalIncludeDirectories>C:\MinGW\local\ruby193vc\include\ruby-1.9.1;C:\MinGW\local\ruby193vc\include\ruby-1.9.1\i386-mswin32_110;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
56
+ <AdditionalIncludeDirectories>C:\MinGW\local\ruby193vc\include\ruby-1.9.1;C:\MinGW\local\ruby193vc\include\ruby-1.9.1\i386-mswin32_100;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
59
57
  </ClCompile>
60
58
  <Link>
61
59
  <SubSystem>Windows</SubSystem>
@@ -20,14 +20,12 @@
20
20
  <ConfigurationType>DynamicLibrary</ConfigurationType>
21
21
  <UseDebugLibraries>true</UseDebugLibraries>
22
22
  <CharacterSet>Unicode</CharacterSet>
23
- <PlatformToolset>v110</PlatformToolset>
24
23
  </PropertyGroup>
25
24
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
26
25
  <ConfigurationType>DynamicLibrary</ConfigurationType>
27
26
  <UseDebugLibraries>false</UseDebugLibraries>
28
27
  <WholeProgramOptimization>true</WholeProgramOptimization>
29
28
  <CharacterSet>Unicode</CharacterSet>
30
- <PlatformToolset>v110</PlatformToolset>
31
29
  </PropertyGroup>
32
30
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
33
31
  <ImportGroup Label="ExtensionSettings">
@@ -55,7 +53,7 @@
55
53
  <WarningLevel>Level3</WarningLevel>
56
54
  <Optimization>Disabled</Optimization>
57
55
  <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RUBY_PROF_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
58
- <AdditionalIncludeDirectories>C:\MinGW\local\ruby200vc\include\ruby-2.0.0;C:\MinGW\local\ruby200vc\include\ruby-2.0.0\i386-mswin32_110;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
56
+ <AdditionalIncludeDirectories>C:\MinGW\local\ruby200vc\include\ruby-2.0.0;C:\MinGW\local\ruby200vc\include\ruby-2.0.0\i386-mswin32_100;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
59
57
  </ClCompile>
60
58
  <Link>
61
59
  <SubSystem>Windows</SubSystem>
@@ -1,7 +1,7 @@
1
1
  /* Copyright (C) 2005-2013 Shugo Maeda <shugo@ruby-lang.org> and Charlie Savage <cfis@savagexi.com>
2
2
  Please see the LICENSE file for copyright and distribution information */
3
3
 
4
- #define RUBY_PROF_VERSION "0.12.1" // as a string, for easy parsing from rake files
4
+ #define RUBY_PROF_VERSION "0.12.2" // as a string, for easy parsing from rake files
5
5
  #define RUBY_PROF_VERSION_MAJ 0
6
6
  #define RUBY_PROF_VERSION_MIN 12
7
- #define RUBY_PROF_VERSION_MIC 1
7
+ #define RUBY_PROF_VERSION_MIC 2
@@ -152,13 +152,18 @@ private
152
152
 
153
153
  # for GC.allocated_size to work GC statistics should be enabled
154
154
  def self.enable_gc_stats_if_needed
155
- if self.measure_mode == RubyProf::MEMORY && GC.respond_to?(:enable_stats)
155
+ if measure_mode_requires_gc_stats_enabled?
156
156
  @gc_stat_was_enabled = GC.enable_stats
157
157
  end
158
158
  end
159
159
 
160
160
  def self.disable_gc_stats_if_needed(was_enabled=nil)
161
161
  was_enabled ||= defined?(@gc_stat_was_enabled) && @gc_stat_was_enabled
162
- GC.disable_stats if self.measure_mode == RubyProf::MEMORY && GC.respond_to?(:disable_stats) && !was_enabled
162
+ GC.disable_stats if measure_mode_requires_gc_stats_enabled? && !was_enabled
163
163
  end
164
- end
164
+
165
+ def self.measure_mode_requires_gc_stats_enabled?
166
+ GC.respond_to?(:enable_stats) &&
167
+ [RubyProf::MEMORY, RubyProf::GC_TIME, RubyProf::GC_RUNS].include?(measure_mode)
168
+ end
169
+ end
File without changes
File without changes
File without changes
File without changes
data/ruby-prof.gemspec CHANGED
@@ -57,4 +57,5 @@ EOF
57
57
  spec.homepage = 'https://github.com/rdp/ruby-prof'
58
58
  spec.add_development_dependency('minitest')
59
59
  spec.add_development_dependency('rake-compiler')
60
- end
60
+ spec.add_development_dependency('rdoc')
61
+ end
File without changes
data/test/basic_test.rb CHANGED
File without changes
File without changes
@@ -17,7 +17,7 @@ class DynamicMethodTest < Test::Unit::TestCase
17
17
  # Methods called
18
18
  # Kernel#sleep
19
19
  # <Class::BasicObject>#allocate
20
- # #{RubyProf.parent_object}
20
+ # #{RubyProf.parent_object}#inizialize
21
21
  # RubyProf::C1#hello
22
22
  # Class#new
23
23
  # Integer#times
@@ -52,6 +52,13 @@ class DynamicMethodTest < Test::Unit::TestCase
52
52
  assert_in_delta(0.0, methods[4].wait_time, 0.01)
53
53
  assert_in_delta(0.0, methods[4].self_time, 0.01)
54
54
 
55
+ # the timing difference between #initialize and #allocate is so small
56
+ # that we cannot rely on #initialize appearing first.
57
+ # so switch them, if necessary
58
+ if methods[5].full_name =~ /#allocate/
59
+ methods[5], methods[6] = methods[6], methods[5]
60
+ end
61
+
55
62
  assert_equal("#{RubyProf.parent_object}#initialize", methods[5].full_name)
56
63
  assert_in_delta(0.0, methods[5].total_time, 0.01)
57
64
  assert_in_delta(0.0, methods[5].wait_time, 0.01)
File without changes
File without changes
File without changes
data/test/exec_test.rb CHANGED
File without changes
File without changes
@@ -3,7 +3,9 @@
3
3
 
4
4
  require File.expand_path('../test_helper', __FILE__)
5
5
 
6
- class MeasuremeGCRunsTest < Test::Unit::TestCase
6
+ class MeasureGCRunsTest < Test::Unit::TestCase
7
+ include MemoryTestHelper
8
+
7
9
  def test_gc_runs_mode
8
10
  RubyProf::measure_mode = RubyProf::GC_RUNS
9
11
  assert_equal(RubyProf::GC_RUNS, RubyProf::measure_mode)
@@ -18,6 +20,7 @@ class MeasuremeGCRunsTest < Test::Unit::TestCase
18
20
  t = RubyProf.measure_gc_runs
19
21
  assert_kind_of Integer, t
20
22
 
23
+ GC.enable_stats
21
24
  GC.start
22
25
 
23
26
  u = RubyProf.measure_gc_runs
@@ -4,6 +4,8 @@
4
4
  require File.expand_path('../test_helper', __FILE__)
5
5
 
6
6
  class MeasureGCTimeTest < Test::Unit::TestCase
7
+ include MemoryTestHelper
8
+
7
9
  def test_gc_time_mode
8
10
  RubyProf::measure_mode = RubyProf::GC_TIME
9
11
  assert_equal(RubyProf::GC_TIME, RubyProf::measure_mode)
@@ -15,15 +17,20 @@ class MeasureGCTimeTest < Test::Unit::TestCase
15
17
 
16
18
  if RubyProf::GC_TIME_ENABLED
17
19
  def test_gc_time
20
+ RubyProf::measure_mode = RubyProf::GC_TIME
21
+ RubyProf.enable_gc_stats_if_needed
22
+
18
23
  t = RubyProf.measure_gc_time
19
- assert_kind_of Integer, t
24
+ assert_kind_of Float, t
20
25
 
21
26
  GC.start
22
27
 
23
28
  u = RubyProf.measure_gc_time
24
29
  assert u > t, [t, u].inspect
25
- RubyProf::measure_mode = RubyProf::GC_TIME
30
+
26
31
  memory_test_helper
32
+ ensure
33
+ RubyProf.disable_gc_stats_if_needed
27
34
  end
28
35
  end
29
- end
36
+ end
@@ -4,12 +4,7 @@
4
4
  require File.expand_path('../test_helper', __FILE__)
5
5
 
6
6
  class MeasureMemoryTest < Test::Unit::TestCase
7
- def memory_test_helper
8
- result = RubyProf.profile {Array.new}
9
- total = result.threads.values.first.inject(0) { |sum, m| sum + m.total_time }
10
- assert(total < 1_000_000, 'Total should not have subtract overflow error')
11
- total
12
- end
7
+ include MemoryTestHelper
13
8
 
14
9
  def test_memory_mode
15
10
  RubyProf::measure_mode = RubyProf::MEMORY
@@ -23,10 +18,10 @@ class MeasureMemoryTest < Test::Unit::TestCase
23
18
  if RubyProf::MEMORY_ENABLED
24
19
  def test_memory
25
20
  t = RubyProf.measure_memory
26
- assert_kind_of Integer, t
21
+ assert_kind_of Float, t
27
22
 
28
23
  u = RubyProf.measure_memory
29
- assert(u >= t, [t, u].inspect)
24
+ assert(u > t, [t, u].inspect)
30
25
  RubyProf::measure_mode = RubyProf::MEMORY
31
26
  total = memory_test_helper
32
27
  assert(total > 0, 'Should measure more than zero kilobytes of memory usage')
@@ -10,7 +10,6 @@ class MeasureProcessTimeTest < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  def test_mode
13
- RubyProf::measure_mode = RubyProf::PROCESS_TIME
14
13
  assert_equal(RubyProf::PROCESS_TIME, RubyProf::measure_mode)
15
14
  end
16
15
 
@@ -28,11 +27,18 @@ class MeasureProcessTimeTest < Test::Unit::TestCase
28
27
  total_time = (finish.utime - start.utime) + (finish.stime - start.stime)
29
28
 
30
29
  thread = result.threads.first
31
- assert_in_delta(total_time, thread.total_time, 0.01)
30
+ assert_in_delta(total_time, thread.total_time, 0.03)
32
31
 
33
32
  methods = result.threads.first.methods.sort.reverse
34
33
 
35
- assert_equal(RubyProf.ruby_2? ? 15 : 16, methods.length)
34
+ if RUBY_VERSION =~ /^1\.8/
35
+ methods.reject!{|m| m.full_name =~ /^Fixnum/ || m.full_name == 'Object#find_largest'}
36
+ end
37
+ if RUBY_VERSION =~ /^(1\.9\.2|2\.0)/
38
+ assert_equal 15, methods.length
39
+ else
40
+ assert_equal 16, methods.length
41
+ end
36
42
 
37
43
  # Check times
38
44
  assert_equal("MeasureProcessTimeTest#test_primes", methods[0].full_name)
@@ -53,4 +59,4 @@ class MeasureProcessTimeTest < Test::Unit::TestCase
53
59
  assert_equal("Array#each_index", methods[7].full_name)
54
60
  assert_equal("Kernel#rand", methods[8].full_name)
55
61
  end
56
- end
62
+ end
@@ -2,7 +2,6 @@
2
2
  # encoding: UTF-8
3
3
 
4
4
  require File.expand_path('../test_helper', __FILE__)
5
- require 'tmpdir'
6
5
 
7
6
  # Test data
8
7
  # A
@@ -35,7 +34,7 @@ class MethodEliminationTest < Test::Unit::TestCase
35
34
  result = RubyProf.profile do
36
35
  1000.times { 1+1 }
37
36
  end
38
- method_infos = result.threads.first.methods
37
+ method_infos = result.threads.first.methods.sort.reverse
39
38
  assert(m1 = method_infos[0])
40
39
  assert(c1 = m1.call_infos.first)
41
40
  assert_nil(c1.parent)
data/test/module_test.rb CHANGED
File without changes
@@ -2,7 +2,6 @@
2
2
  # encoding: UTF-8
3
3
 
4
4
  require File.expand_path('../test_helper', __FILE__)
5
- require 'tmpdir'
6
5
 
7
6
  # Test data
8
7
  # A
@@ -50,20 +49,20 @@ class MultiPrinterTest < Test::Unit::TestCase
50
49
  \s*</tr>
51
50
  \s*
52
51
  \s*<tr>
53
- \s*<td><a href="#\d+">\d+</a></td>
52
+ \s*<td><a href="#-?\d+">-?\d+</a></td>
54
53
  \s*<td>([\.0-9]+)</td>
55
54
  \s*</tr>
56
55
  \s*
57
56
  \s*</table>')
58
- assert graph =~ re
57
+ assert_match(re, graph)
59
58
  display_time = $1.to_f
60
- assert_in_delta expected_time, display_time, 0.005
59
+ assert_in_delta expected_time, display_time, 0.5
61
60
  end
62
61
 
63
62
  private
64
63
  def print(result)
65
64
  test = caller.first =~ /in `(.*)'/ ? $1 : "test"
66
- path = Dir::tmpdir
65
+ path = RubyProf.tmpdir
67
66
  profile = "ruby_prof_#{test}"
68
67
  printer = RubyProf::MultiPrinter.new(result)
69
68
  printer.print(:path => path, :profile => profile,
@@ -75,6 +74,6 @@ class MultiPrinterTest < Test::Unit::TestCase
75
74
  GC.start
76
75
  GC.dump_file_and_line_info("heap.dump")
77
76
  end
78
- [File.open(printer.stack_profile){|f|f.read}, File.open(printer.graph_profile){|f|f.read}]
77
+ [File.read(printer.stack_profile), File.read(printer.graph_profile)]
79
78
  end
80
79
  end
File without changes
@@ -31,6 +31,10 @@ class PauseResumeTest < Test::Unit::TestCase
31
31
  # Kernel#sleep
32
32
 
33
33
  methods = result.threads.first.methods.sort_by {|method_info| method_info.full_name}
34
+ # remove methods called by pause/resume
35
+ called_methods = ['Array#include?', 'Fixnum#==', 'Kernel#respond_to?', 'Kernel#respond_to_missing?']
36
+ methods.reject!{|m| called_methods.include?(m.full_name) }
37
+ # TODO: fix pause/resume to not include those methods in the first place
34
38
  assert_equal(3, methods.length)
35
39
 
36
40
  # Check the names
@@ -56,15 +60,12 @@ class PauseResumeTest < Test::Unit::TestCase
56
60
  def test_pause_resume_1
57
61
  profile = RubyProf::Profile.new(RubyProf::WALL_TIME,[])
58
62
 
59
- # Measured
60
63
  profile.start
61
64
  method_1a
62
65
 
63
- # Not measured
64
66
  profile.pause
65
67
  method_1b
66
68
 
67
- # Measured
68
69
  profile.resume
69
70
  method_1c
70
71
 
@@ -79,11 +80,9 @@ class PauseResumeTest < Test::Unit::TestCase
79
80
  def test_pause_resume_2
80
81
  profile = RubyProf::Profile.new(RubyProf::WALL_TIME,[])
81
82
 
82
- # Measured
83
83
  profile.start
84
84
  method_2a
85
85
 
86
- # Not Measured
87
86
  profile.pause
88
87
  sleep 0.5
89
88
  method_2b(profile)
@@ -98,11 +97,10 @@ class PauseResumeTest < Test::Unit::TestCase
98
97
  def test_pause_resume_3
99
98
  profile = RubyProf::Profile.new(RubyProf::WALL_TIME,[])
100
99
 
101
- # Measured
102
100
  profile.start
103
101
  method_3a(profile)
104
- sleep 0.5
105
102
 
103
+ sleep 0.5
106
104
  profile.resume
107
105
  method_3b
108
106
 
@@ -165,4 +163,4 @@ class PauseResumeTest < Test::Unit::TestCase
165
163
  profile.resume; assert !profile.paused?
166
164
  profile.stop ; assert !profile.paused?
167
165
  end
168
- end
166
+ end