Sha256: f061a27411656441fe4671619332bc4540d8c3c976e00f820b84965732ae0dfa

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

require 'zeus/rails'
require_relative 'spec/support/tests/current_bundle'

class CustomPlan < Zeus::Plan
  def initialize
    super
    @rails_plan = Zeus::Rails.new
  end

  def boot
    ENV['BUNDLE_GEMFILE'] = File.expand_path(
      "../gemfiles/#{latest_appraisal}.gemfile",
      __FILE__
    )

    require 'bundler/setup'

    $LOAD_PATH << File.expand_path('../lib', __FILE__)
    $LOAD_PATH << File.expand_path('../spec', __FILE__)

    require_relative 'spec/support/unit/load_environment'
  end

  def after_fork
    # @rails_plan.reconnect_activerecord
  end

  def test_environment
    require_relative 'spec/unit_spec_helper'
  end

  def rspec
    ARGV.replace(file_paths_to_run)
    RSpec::Core::Runner.invoke
  end

  private

  def latest_appraisal
    current_bundle.latest_appraisal
  end

  def current_bundle
    Tests::CurrentBundle.instance
  end

  def file_paths_to_run
    if given_file_paths.empty?
      ['spec/unit']
    else
      given_file_paths.map do |given_path|
        determine_file_path_to_run(given_path)
      end
    end
  end

  def determine_file_path_to_run(given_rspec_argument)
    expanded_file_path, location =
      expand_rspec_argument(given_rspec_argument)

    if File.exist?(expanded_file_path)
      if location
        expanded_file_path + location
      else
        expanded_file_path
      end
    else
      given_rspec_argument
    end
  end

  def expand_rspec_argument(rspec_argument)
    match = rspec_argument.match(/\A(.+?)(:\d+|\[[\d:]+\])?\Z/)
    file_path, location = match.captures
    expanded_file_path = File.expand_path(
      "../spec/unit/shoulda/matchers/#{file_path}",
      __FILE__
    )

    [expanded_file_path, location]
  end

  def given_file_paths
    ARGV
  end
end

Zeus.plan = CustomPlan.new

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shoulda-matchers-3.1.0 custom_plan.rb