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