forked from rspec/rspec-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinvocations.rb
87 lines (76 loc) · 2.47 KB
/
invocations.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
module RSpec
module Core
# @private
module Invocations
# @private
class InitializeProject
def call(*_args)
RSpec::Support.require_rspec_core "project_initializer"
ProjectInitializer.new.run
0
end
end
# @private
class DRbWithFallback
def call(options, err, out)
require 'rspec/core/drb'
begin
return DRbRunner.new(options).run(err, out)
rescue DRb::DRbConnError
err.puts "No DRb server is running. Running in local process instead ..."
end
RSpec::Core::Runner.new(options).run(err, out)
end
end
# @private
class Bisect
def call(options, err, out)
RSpec::Support.require_rspec_core "bisect/coordinator"
runner = Runner.new(options).tap { |r| r.configure(err, out) }
formatter = bisect_formatter_klass_for(options.options[:bisect]).new(
out, runner.configuration.bisect_runner
)
success = RSpec::Core::Bisect::Coordinator.bisect_with(
runner, options.args, formatter
)
runner.exit_code(success)
end
private
def bisect_formatter_klass_for(argument)
return Formatters::BisectDebugFormatter if argument == "verbose"
Formatters::BisectProgressFormatter
end
end
# @private
class PrintVersion
def call(_options, _err, out)
overall_version = RSpec::Core::Version::STRING
unless overall_version =~ /[a-zA-Z]+/
overall_version = overall_version.split('.').first(2).join('.')
end
out.puts "RSpec #{overall_version}"
[:Core, :Expectations, :Mocks, :Rails, :Support].each do |const_name|
lib_name = const_name.to_s.downcase
begin
require "rspec/#{lib_name}/version"
rescue LoadError
# Not worth mentioning libs that are not installed
nil
else
out.puts " - rspec-#{lib_name} #{RSpec.const_get(const_name)::Version::STRING}"
end
end
0
end
end
# @private
PrintHelp = Struct.new(:parser, :hidden_options) do
def call(_options, _err, out)
# Removing the hidden options from the output.
out.puts parser.to_s.gsub(/^\s+(#{hidden_options.join('|')})\b.*$\n/, '')
0
end
end
end
end
end