jam-cloud/ruby/spec/support/profile.rb

23 lines
646 B
Ruby

if ENV['PROFILE']
require 'ruby-prof'
RSpec.configure do |c|
def profile
result = RubyProf.profile { yield }
name = example.metadata[:full_description].downcase.gsub(/[^a-z0-9_-]/, "-").gsub(/-+/, "-")
printer = RubyProf::CallTreePrinter.new(result)
Dir.mkdir('tmp/performance')
open("tmp/performance/callgrind.#{name}.#{Time.now.to_i}.trace", "w") do |f|
printer.print(f)
end
end
c.around(:each) do |example|
if ENV['PROFILE'] == 'all' or (example.metadata[:profile] and ENV['PROFILE'])
profile { example.run }
else
example.run
end
end
end
end