Sha256: 08f2ca0e508950981e54310371f390c2a11f509272b7d4b6d1bdf713d14c623d

Contents?: true

Size: 1.72 KB

Versions: 3

Compression:

Stored size: 1.72 KB

Contents

require 'rubygems'
gem 'rspec'
require 'spec'
require 'spec/autorun'
require 'ruby-debug'

$LOAD_PATH.unshift(File.dirname(__FILE__))
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
require 'butternut'

require 'cucumber/rb_support/rb_language'
require 'nokogiri'

module SpecHelperDsl
  attr_reader :feature_content, :step_defs

  def define_feature(string)
    @feature_content = string
  end

  def define_steps(&block)
    @step_defs = block
  end
end

module SpecHelper
  def run_defined_feature
    setup_world
    define_steps
    features = load_features(self.class.feature_content || raise("No feature content defined!"))
    run(features)
  end

  def step_mother
    @step_mother ||= Cucumber::StepMother.new
  end

  def load_features(content)
    feature_file = Cucumber::FeatureFile.new('spec.feature', content)
    features = Cucumber::Ast::Features.new
    features.add_feature feature_file.parse(step_mother, {})
    features
  end

  def run(features)
    # options = { :verbose => true }
    options = {}
    tree_walker = Cucumber::Ast::TreeWalker.new(step_mother, @formatter ? [@formatter] : [], options, STDOUT)
    tree_walker.visit_features(features)
  end

  def dsl
    unless @dsl
      rb = step_mother.load_programming_language('rb')
      @dsl = Object.new
      @dsl.extend Cucumber::RbSupport::RbDsl
    end
    @dsl
  end

  def define_steps
    return unless step_defs = self.class.step_defs
    dsl.instance_exec &step_defs
  end

  def setup_world
    dsl.instance_exec do
      Butternut.setup_hooks(self)
      World(Butternut::Helpers)
    end
  end
end

Spec::Runner.configure do |config|
  config.before(:each) do
    Cucumber::Parser::NaturalLanguage.instance_variable_set(:@languages, nil)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
butternut-0.1.0 spec/spec_helper.rb
butternut-0.0.1 spec/spec_helper.rb
butternut-0.0.0 spec/spec_helper.rb