Module: Fantaskspec::RakeExampleGroup

Extended by:
RSpec::Matchers::DSL
Defined in:
lib/fantaskspec/rake_example_group.rb

Class Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/fantaskspec/rake_example_group.rb', line 8

def self.included(klass)
  klass.instance_eval do
    let(:task_names) { ::Rake::Task.tasks.map(&:name) }
    let(:task_name) do
      descriptions = self.class.parent_groups.map(&:description)

      name = descriptions.find do |description|
        task_names.include?(description)
      end

      if name.nil?
        raise AmbiguousNameError, "unable to infer the name of the task. Please rename your describe/context or specify your task name via `let(:task_name) { ... }`"
      end

      name
    end

    let(:task) { ::Rake::Task[task_name] }
    subject { task }
  end
end