class Minitest::TestProf::TagProfReporter

:nodoc:

def absolute_path_from(result)

def absolute_path_from(result)
  absolute_path = File.expand_path(result.source_location.first)
  absolute_path.slice(/(?<=(?:spec|test)\/)\w*/)
end

def configure_profiler

def configure_profiler
  ::TestProf::EventProf::CustomEvents.activate_all(tag_prof_event)
  ::TestProf::EventProf.build(tag_prof_event)
end

def event_prof_activated?

def event_prof_activated?
  return false if tag_prof_event.nil?
  !tag_prof_event.empty?
end

def fetch_events_data

def fetch_events_data
  return {} unless @events_profiler
  @events_profiler.profilers.map do |profiler|
    [profiler.event, profiler.time || 0.0]
  end.to_h
end

def initialize(io = $stdout, _options = {})

def initialize(io = $stdout, _options = {})
  super
  @results = ::TestProf::TagProf::Result.new("type")
  if event_prof_activated?
    require "test_prof/event_prof"
    @current_group_id = nil
    @events_profiler = configure_profiler
    @results = ::TestProf::TagProf::Result.new("type", @events_profiler.events)
  end
end

def main_folder_path(result)

def main_folder_path(result)
  return :__unknown__ if absolute_path_from(result).nil?
  absolute_path_from(result)
end

def prerecord(group, example)

def prerecord(group, example)
  return unless event_prof_activated?
  # enable event profiling
  @events_profiler.group_started(true)
end

def record(result)

def record(result)
  results.track(main_folder_path(result), time: result.time, events: fetch_events_data)
  @events_profiler.group_started(nil) if event_prof_activated? # reset and disable event profilers
end

def report

def report
  printer = (ENV["TAG_PROF_FORMAT"] == "html") ? ::TestProf::TagProf::Printers::HTML : ::TestProf::TagProf::Printers::Simple
  printer.dump(results)
end

def tag_prof_event

def tag_prof_event
  ENV["TAG_PROF_EVENT"]
end