Sha256: 1001f43d4704256ed4d6663134d33160ec5667135d6cb5d3ec41f2579f4cd50d

Contents?: true

Size: 1.81 KB

Versions: 2

Compression:

Stored size: 1.81 KB

Contents

require 'yaml'

module Shoe
  module Tasks

    # Defines <tt>`rake cucumber`</tt> and <tt>`rake cucumber:<PROFILE>`</tt> to
    # run your Cucumber[http://cukes.info] features.
    #
    # <tt>`rake cucumber`</tt> will run features according to the <tt>default</tt> profile; <tt>`rake cucumber:foo`</tt> according to the <tt>foo</tt> profile.
    #
    # To enable and configure, create and edit your
    # <tt>{cucumber.yml}[http://wiki.github.com/aslakhellesoy/cucumber/cucumberyml]</tt>.
    class Cucumber < Abstract
      def active?
        !cucumber_profiles.empty?
      end

      def define
        begin
          require 'cucumber/rake/task'
        rescue LoadError
          warn 'cucumber',
            "Although you have a cucumber.yml, it seems you don't have cucumber installed.",
            "You probably want to add a \"gem 'cucumber'\" to your Gemfile."
        else
          define_tasks
        end
      end

      private

      def define_tasks
        cucumber_profiles.each do |profile|
          if profile == 'default'
            define_default_task
          else
            define_profile_task(profile)
          end
        end
      end

      def cucumber_profiles
        YAML.load_file('cucumber.yml').keys rescue []
      end

      def define_default_task
        task :prepare

        ::Cucumber::Rake::Task.new({ :cucumber => :prepare }, 'Run features') do |task|
          task.profile = 'default'
        end

        task :default
        Rake.application[:default].prerequisites.push(Rake.application[:cucumber])
      end

      def define_profile_task(profile)
        task :prepare

        namespace :cucumber do
          ::Cucumber::Rake::Task.new({ profile => :prepare }, "Run #{profile} features") do |task|
            task.profile = profile
          end
        end
      end
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
shoe-0.5.1 lib/shoe/tasks/cucumber.rb
shoe-0.5.0 lib/shoe/tasks/cucumber.rb