mirror of
https://github.com/thoughtbot/shoulda-matchers.git
synced 2022-11-09 12:01:38 -05:00
89 lines
1.7 KiB
Ruby
89 lines
1.7 KiB
Ruby
|
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
|