module RSpec::Rake::ExampleGroup

Public Class Methods

included(base) click to toggle source
# File lib/rspec/rake/example_group.rb, line 7
def self.included(base)
  base.instance_eval do

    metadata[:type] = :task
    metadata[:tasks_path] ||= File.join('lib', 'tasks')
    metadata[:rakefile] ||= nil

    subject(:task)  { Rake.application[self.class.top_level_description] }

    before(:each) do
      metadata = self.class.metadata
      task_name = self.class.top_level_description

      rakefile = metadata[:rakefile] || task_name.split(':').first
      task_path = File.join('..', metadata[:tasks_path], rakefile)

      Rake.application = Rake::Application.new
      # We are sending an empty list of loaded files
      # in order to force loading of existing files
      Rake.application.rake_require(task_path, $LOAD_PATH, [])
      Rake::Task.define_task(:environment)
    end
  end

end