module Yari::RSpec::Loader

Public Instance Methods

load(*paths, &block) click to toggle source
Calls superclass method
# File lib/yari/yari_loader.rb, line 7
def load(*paths, &block)

  # Override feature exclusion filter if running features
  if paths.any? { |path| Yari.feature?(path) }
    ::RSpec.configuration.filter_manager.exclusions.rules.reject! do |key, value|
      key == :feature || (key == :type && value == 'feature')
    end
  end

  paths = paths.map do |path|
    if Yari.feature?(path)
      spec_path = Yari.feature_to_spec(path)
      if File.exist?(spec_path)
        spec_path
      else
        Yari::Builder.build(path).features.each do |feature|
          ::RSpec.describe("Feature: #{feature.name}", :type => :feature, :feature => true) do
            it do |example|
              example.metadata[:location] = path << ':1'
              skip('No spec implemented for feature')
            end
          end
        end
        nil
      end
    else
      path
    end
  end.compact

  # Load needed features to Yari.features array
  paths.each do |path|
    if Yari.feature_spec?(path)
      feature_path = Yari.spec_to_feature(path)

      if File.exists?(feature_path)
        Yari.features += Yari::Builder.build(feature_path).features
      end
    end
  end

  super(*paths, &block) if paths.size > 0
end