Class: TestProf::RubyProf::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/test_prof/ruby_prof.rb

Overview

RubyProf configuration

Constant Summary collapse

ELIMINATE_METHODS =

Default list of methods to exclude from profile. Contains a lot of RSpec stuff.

[
  /instance_exec/,
  /ExampleGroup>?#run/,
  /Procsy/,
  /AroundHook#execute_with/,
  /HookCollections/,
  /Array#(map|each)/
].freeze
PRINTERS =
{
  'flat' => 'FlatPrinter',
  'flat_wln' => 'FlatWithLineNumbers',
  'graph' => 'GraphPrinter',
  'graph_html' => 'GraphHtmlPrinter',
  'dot' => 'DotPrinter',
  '.' => 'DotPrinter',
  'call_stack' => 'CallStackPrinter',
  'call_tree' => 'CallTreePrinter'
}.freeze
PRINTER_EXTENSTION =

Mapping from printer to report file extension NOTE: txt is not included and considered default

{
  'graph_html' => 'html',
  'dot' => 'dot',
  '.' => 'dot',
  'call_stack' => 'html',
  'call_tree' => 'dat'
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



62
63
64
65
66
67
68
69
# File 'lib/test_prof/ruby_prof.rb', line 62

def initialize
  @printer = ENV['TEST_RUBY_PROF'].to_sym if PRINTERS.key?(ENV['TEST_RUBY_PROF'])
  @printer ||= ENV.fetch('TEST_RUBY_PROF_PRINTER', :flat).to_sym
  @mode = ENV.fetch('TEST_RUBY_PROF_MODE', :wall).to_sym
  @min_percent = 1
  @include_threads = false
  @eliminate_methods = ELIMINATE_METHODS
end

Instance Attribute Details

#eliminate_methodsObject

Returns the value of attribute eliminate_methods.



59
60
61
# File 'lib/test_prof/ruby_prof.rb', line 59

def eliminate_methods
  @eliminate_methods
end

#include_threadsObject

Returns the value of attribute include_threads.



59
60
61
# File 'lib/test_prof/ruby_prof.rb', line 59

def include_threads
  @include_threads
end

#min_percentObject

Returns the value of attribute min_percent.



59
60
61
# File 'lib/test_prof/ruby_prof.rb', line 59

def min_percent
  @min_percent
end

#modeObject

Returns the value of attribute mode.



59
60
61
# File 'lib/test_prof/ruby_prof.rb', line 59

def mode
  @mode
end

#printerObject

Returns the value of attribute printer.



59
60
61
# File 'lib/test_prof/ruby_prof.rb', line 59

def printer
  @printer
end

Instance Method Details

#eliminate_methods?Boolean

Returns:

  • (Boolean)


75
76
77
78
# File 'lib/test_prof/ruby_prof.rb', line 75

def eliminate_methods?
  !eliminate_methods.nil? &&
    !eliminate_methods.empty?
end

#include_threads?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/test_prof/ruby_prof.rb', line 71

def include_threads?
  include_threads == true
end

#resolve_printerObject

Returns an array of printer type (ID) and class.

Raises:

  • (ArgumentError)


81
82
83
84
85
86
87
88
89
90
# File 'lib/test_prof/ruby_prof.rb', line 81

def resolve_printer
  return ['custom', printer] if printer.is_a?(Module)

  type = printer.to_s

  raise ArgumentError, "Unknown printer: #{type}" unless
    PRINTERS.key?(type)

  [type, ::RubyProf.const_get(PRINTERS[type])]
end