class Knapsack::Adapters::RSpecAdapter

Constants

REPORT_PATH
TEST_DIR_PATTERN

Public Class Methods

test_path(example) click to toggle source
# File lib/knapsack/adapters/rspec_adapter.rb, line 47
def self.test_path(example)
  example_group = example.metadata[:example_group]

  if defined?(::Turnip) && Gem::Version.new(::Turnip::VERSION) < Gem::Version.new('2.0.0')
    unless example_group[:turnip]
      until example_group[:parent_example_group].nil?
        example_group = example_group[:parent_example_group]
      end
    end
  else
    until example_group[:parent_example_group].nil?
      example_group = example_group[:parent_example_group]
    end
  end

  example_group[:file_path]
end

Public Instance Methods

bind_report_generator() click to toggle source
# File lib/knapsack/adapters/rspec_adapter.rb, line 27
def bind_report_generator
  ::RSpec.configure do |config|
    config.after(:suite) do
      Knapsack.report.save
      Knapsack.logger.info(Presenter.report_details)
    end
  end
end
bind_time_offset_warning() click to toggle source
# File lib/knapsack/adapters/rspec_adapter.rb, line 36
def bind_time_offset_warning
  ::RSpec.configure do |config|
    config.after(:suite) do
      Knapsack.logger.log(
        Presenter.time_offset_log_level,
        Presenter.time_offset_warning
      )
    end
  end
end
bind_time_tracker() click to toggle source
# File lib/knapsack/adapters/rspec_adapter.rb, line 7
def bind_time_tracker
  ::RSpec.configure do |config|
    config.prepend_before(:context) do
      Knapsack.tracker.start_timer
    end

    config.prepend_before(:each) do |example|
      Knapsack.tracker.test_path = RSpecAdapter.test_path(example)
    end

    config.append_after(:context) do
      Knapsack.tracker.stop_timer
    end

    config.after(:suite) do
      Knapsack.logger.info(Presenter.global_time)
    end
  end
end