Sha256: 3676068fca16e18f6d08d5e1bbb9982fa60b2296433cd7a58fc0b3b58a19a9bd

Contents?: true

Size: 962 Bytes

Versions: 3

Compression:

Stored size: 962 Bytes

Contents

require 'rake'
require 'rake/tasklib'

module CukeForker
  class RakeTask < Rake::TaskLib
    attr_accessor :name
    attr_accessor :verbose
    attr_accessor :features
    attr_accessor :extra_args

    def initialize(*args, &task_block)
      setup_ivars(args)

      desc 'Run CukeForker' unless ::Rake.application.last_comment

      task(name, *args) do |_, task_args|
        RakeFileUtils.send(:verbose, verbose) do
          if task_block
            task_block.call(*[self, task_args].slice(0, task_block.arity))
          end

          run_cukeforker
        end
      end
    end

    def setup_ivars(args)
      @name = args.shift || :cukeforker

      split = args.index("--")
      if split
        @extra_args = args[0..(split-1)]
        @features = args[(split+1)..-1]
      end
    end

    def run_cukeforker
      unless CukeForker::Runner.run(@features, :extra_args => @extra_args)
        raise 'Test failures'
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cukeforker-1.1.0 lib/cukeforker/rake_task.rb
cukeforker-1.0.0 lib/cukeforker/rake_task.rb
cukeforker-0.2.5 lib/cukeforker/rake_task.rb