rspec-parallel 2.14.8.2 → 2.14.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/bin/rspec +2 -2
- data/lib/rspec/parallel.rb +17 -7
- data/lib/rspec/parallel/command_line.rb +8 -8
- data/lib/rspec/parallel/configuration_options.rb +11 -3
- data/lib/rspec/parallel/option_parser.rb +158 -166
- data/lib/rspec/parallel/runner.rb +4 -4
- data/lib/rspec/parallel/version.rb +1 -1
- data/lib/rspec/parallel_autorun.rb +3 -0
- metadata +6 -10
- data/lib/rspec/parallel/autorun.rb +0 -2
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZTFhNDU3NjI5NTg3YzU3ZTAwYTcyMzk2MjUzNmFhMTdhNzY0YTEwNA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
M2IwMGViOGQ1MjZiMzExMTFjNGQwNGZkOGViYTcxMzM2OTdjZmYwOA==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MzU5NWZkYjE3ZWIyMThlZDA2NTJkZGNlMmQ1NGNiNDUxNmU1MTNlNTA2NWNh
|
10
|
+
OThlZmY3ZWJlZDU1MDIwZDQ0Y2IyMjE3NDBkNjA0YmQ0ZjcwMjUyNTUwNjIw
|
11
|
+
MGQ5NTE3MTAyZDc1ZWFjYmQwN2QzNTk5NTA2ZjNkODI5NjEyNTA=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZWM0MWFiZWJmNzc0OGE4M2RhYTNhNDUzNTk1NTJiMDU3YTcyMGI3YjcwNzM2
|
14
|
+
ZDg3Y2VjYzQxNjRhODc5NGU0OGNiYWQ5Nzk2OTg5ZmM4MmYyMzljMWY0OTAw
|
15
|
+
MjZiMWEwMDQyZWRiNmUzMmQyMzQwY2ViOWFhMzdjNTU4NTY0MTY=
|
data/bin/rspec
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
begin
|
4
|
-
require 'rspec/
|
4
|
+
require 'rspec/parallel_autorun'
|
5
5
|
rescue LoadError
|
6
6
|
$stderr.puts <<-EOS
|
7
7
|
#{'*'*50}
|
8
|
-
Could not find 'rspec/
|
8
|
+
Could not find 'rspec/parallel_autorun'
|
9
9
|
|
10
10
|
This may happen if you're using rubygems as your package manager, but it is not
|
11
11
|
being required through some mechanism before executing the rspec command.
|
data/lib/rspec/parallel.rb
CHANGED
@@ -13,26 +13,36 @@ require_rspec['parallel/version']
|
|
13
13
|
require_rspec['parallel/configuration']
|
14
14
|
require_rspec['parallel/option_parser']
|
15
15
|
require_rspec['parallel/configuration_options']
|
16
|
+
require_rspec['parallel/command_line']
|
16
17
|
require_rspec['parallel/example_thread_runner']
|
17
18
|
require_rspec['parallel/example_group_thread_runner']
|
18
19
|
require_rspec['parallel/runner']
|
19
20
|
|
20
21
|
module RSpec
|
21
|
-
# Returns the global [Configuration](RSpec/
|
22
|
+
# Returns the global [Configuration](RSpec/Core/Configuration) object. While you
|
22
23
|
# _can_ use this method to access the configuration, the more common
|
23
24
|
# convention is to use [RSpec.configure](RSpec#configure-class_method).
|
24
25
|
#
|
25
26
|
# @example
|
26
27
|
# RSpec.configuration.drb_port = 1234
|
27
28
|
# @see RSpec.configure
|
28
|
-
# @see
|
29
|
+
# @see Core::Configuration
|
29
30
|
def self.configuration
|
30
|
-
|
31
|
-
|
32
|
-
config.expose_dsl_globally = true
|
33
|
-
config
|
34
|
-
end
|
31
|
+
if block_given?
|
32
|
+
RSpec.warn_deprecation <<-WARNING
|
35
33
|
|
34
|
+
*****************************************************************
|
35
|
+
DEPRECATION WARNING
|
36
|
+
|
37
|
+
* RSpec.configuration with a block is deprecated and has no effect.
|
38
|
+
* please use RSpec.configure with a block instead.
|
39
|
+
|
40
|
+
Called from #{caller(0)[1]}
|
41
|
+
*****************************************************************
|
42
|
+
|
43
|
+
WARNING
|
44
|
+
end
|
45
|
+
@configuration ||= RSpec::Parallel::Configuration.new
|
36
46
|
end
|
37
47
|
|
38
48
|
module Parallel
|
@@ -3,35 +3,35 @@ module RSpec
|
|
3
3
|
class CommandLine < RSpec::Core::CommandLine
|
4
4
|
def initialize(options, configuration=RSpec::configuration, world=RSpec::world)
|
5
5
|
if Array === options
|
6
|
-
options = ConfigurationOptions.new(options)
|
6
|
+
options = RSpec::Parallel::ConfigurationOptions.new(options)
|
7
7
|
options.parse_options
|
8
8
|
end
|
9
|
-
@options
|
9
|
+
@options = options
|
10
10
|
@configuration = configuration
|
11
|
-
@world
|
11
|
+
@world = world
|
12
12
|
end
|
13
13
|
|
14
14
|
# Configures and runs a suite
|
15
15
|
#
|
16
16
|
# @param [IO] err
|
17
17
|
# @param [IO] out
|
18
|
-
def
|
18
|
+
def run(err, out)
|
19
19
|
@configuration.error_stream = err
|
20
20
|
@configuration.output_stream ||= out
|
21
21
|
@options.configure(@configuration)
|
22
22
|
@configuration.load_spec_files
|
23
23
|
@world.announce_filters
|
24
|
-
|
24
|
+
|
25
25
|
@configuration.reporter.report(@world.example_count, @configuration.randomize? ? @configuration.seed : nil) do |reporter|
|
26
26
|
begin
|
27
27
|
@configuration.run_hook(:before, :suite)
|
28
|
-
group_threads = RSpec::Parallel::ExampleGroupThreadRunner.new(@
|
28
|
+
group_threads = RSpec::Parallel::ExampleGroupThreadRunner.new(@options.options[:thread_maximum])
|
29
29
|
@world.example_groups.ordered.map {|g| group_threads.run(g, reporter)}
|
30
30
|
group_threads.wait_for_completion
|
31
31
|
|
32
32
|
@world.example_groups.all? do |g|
|
33
|
-
result_for_this_group = g.filtered_examples.all? { |example| example.
|
34
|
-
results_for_descendants = g.children.all? { |child| child.filtered_examples.all? { |example| example.
|
33
|
+
result_for_this_group = g.filtered_examples.all? { |example| example.exception.nil? }
|
34
|
+
results_for_descendants = g.children.all? { |child| child.filtered_examples.all? { |example| example.exception.nil? } }
|
35
35
|
result_for_this_group && results_for_descendants
|
36
36
|
end ? 0 : @configuration.failure_exit_code
|
37
37
|
ensure
|
@@ -1,10 +1,18 @@
|
|
1
1
|
module RSpec
|
2
2
|
module Parallel
|
3
3
|
class ConfigurationOptions < RSpec::Core::ConfigurationOptions
|
4
|
-
|
5
|
-
:requires, :profile, :drb, :libs, :files_or_directories_to_run,
|
6
|
-
:full_description, :full_backtrace, :tty, :thread_maximum
|
4
|
+
NON_FORCED_OPTIONS = [
|
5
|
+
:debug, :requires, :profile, :drb, :libs, :files_or_directories_to_run,
|
6
|
+
:line_numbers, :full_description, :full_backtrace, :tty, :thread_maximum
|
7
7
|
].to_set
|
8
|
+
|
9
|
+
def env_options
|
10
|
+
ENV["SPEC_OPTS"] ? RSpec::Parallel::Parser.parse!(Shellwords.split(ENV["SPEC_OPTS"])) : {}
|
11
|
+
end
|
12
|
+
|
13
|
+
def command_line_options
|
14
|
+
@command_line_options ||= RSpec::Parallel::Parser.parse!(@args).merge :files_or_directories_to_run => @args
|
15
|
+
end
|
8
16
|
end
|
9
17
|
end
|
10
18
|
end
|
@@ -1,213 +1,205 @@
|
|
1
1
|
module RSpec
|
2
2
|
module Parallel
|
3
3
|
class Parser < RSpec::Core::Parser
|
4
|
-
def
|
5
|
-
|
6
|
-
parser.banner = "Usage: rspec [options] [files or directories]\n\n"
|
4
|
+
def parse!(args)
|
5
|
+
return {} if args.empty?
|
7
6
|
|
8
|
-
|
9
|
-
options[:libs] ||= []
|
10
|
-
options[:libs] << dir
|
11
|
-
end
|
7
|
+
convert_deprecated_args(args)
|
12
8
|
|
13
|
-
|
14
|
-
|
15
|
-
options
|
9
|
+
options = args.delete('--tty') ? {:tty => true} : {}
|
10
|
+
begin
|
11
|
+
parser(options).parse!(args)
|
12
|
+
rescue OptionParser::InvalidOption => e
|
13
|
+
abort "#{e.message}\n\nPlease use --help for a listing of valid options"
|
16
14
|
end
|
17
15
|
|
18
|
-
|
19
|
-
|
20
|
-
end
|
16
|
+
options
|
17
|
+
end
|
21
18
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
' [random] alias for rand',
|
26
|
-
' [random:SEED] e.g. --order random:123') do |o|
|
27
|
-
options[:order] = o
|
28
|
-
end
|
19
|
+
def parser(options)
|
20
|
+
OptionParser.new do |parser|
|
21
|
+
parser.banner = "Usage: rspec [options] [files or directories]\n\n"
|
29
22
|
|
30
|
-
|
31
|
-
|
32
|
-
|
23
|
+
parser.on('-I PATH', 'Specify PATH to add to $LOAD_PATH (may be used more than once).') do |dir|
|
24
|
+
options[:libs] ||= []
|
25
|
+
options[:libs] << dir
|
26
|
+
end
|
33
27
|
|
34
|
-
|
35
|
-
|
36
|
-
|
28
|
+
parser.on('-r', '--require PATH', 'Require a file.') do |path|
|
29
|
+
options[:requires] ||= []
|
30
|
+
options[:requires] << path
|
31
|
+
end
|
37
32
|
|
38
|
-
|
39
|
-
|
40
|
-
|
33
|
+
parser.on('-O', '--options PATH', 'Specify the path to a custom options file.') do |path|
|
34
|
+
options[:custom_options_file] = path
|
35
|
+
end
|
41
36
|
|
42
|
-
|
43
|
-
|
44
|
-
|
37
|
+
parser.on('--order TYPE[:SEED]', 'Run examples by the specified order type.',
|
38
|
+
' [default] files are ordered based on the underlying file',
|
39
|
+
' system\'s order',
|
40
|
+
' [rand] randomize the order of files, groups and examples',
|
41
|
+
' [random] alias for rand',
|
42
|
+
' [random:SEED] e.g. --order random:123') do |o|
|
43
|
+
options[:order] = o
|
44
|
+
end
|
45
45
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
end
|
46
|
+
parser.on('--seed SEED', Integer, 'Equivalent of --order rand:SEED.') do |seed|
|
47
|
+
options[:order] = "rand:#{seed}"
|
48
|
+
end
|
50
49
|
|
51
|
-
|
52
|
-
|
53
|
-
|
50
|
+
parser.on('-d', '--debugger', 'Enable debugging.') do |o|
|
51
|
+
options[:debug] = true
|
52
|
+
end
|
54
53
|
|
55
|
-
|
56
|
-
|
57
|
-
|
54
|
+
parser.on('--fail-fast', 'Abort the run on first failure.') do |o|
|
55
|
+
options[:fail_fast] = true
|
56
|
+
end
|
58
57
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
exit
|
63
|
-
end
|
58
|
+
parser.on('--failure-exit-code CODE', Integer, 'Override the exit code used when there are failing specs.') do |code|
|
59
|
+
options[:failure_exit_code] = code
|
60
|
+
end
|
64
61
|
|
65
|
-
|
62
|
+
parser.on('-X', '--[no-]drb', 'Run examples via DRb.') do |o|
|
63
|
+
options[:drb] = o
|
64
|
+
end
|
66
65
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
' [h]tml',
|
71
|
-
' [j]son',
|
72
|
-
' custom formatter class name') do |o|
|
73
|
-
options[:formatters] ||= []
|
74
|
-
options[:formatters] << [o]
|
75
|
-
end
|
66
|
+
parser.on('--drb-port PORT', 'Port to connect to the DRb server.') do |o|
|
67
|
+
options[:drb_port] = o.to_i
|
68
|
+
end
|
76
69
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
) do |o|
|
82
|
-
options[:formatters] ||= [['progress']]
|
83
|
-
options[:formatters].last << o
|
84
|
-
end
|
70
|
+
parser.on('--init', 'Initialize your project with RSpec.') do |cmd|
|
71
|
+
ProjectInitializer.new(cmd).run
|
72
|
+
exit
|
73
|
+
end
|
85
74
|
|
86
|
-
|
87
|
-
|
88
|
-
|
75
|
+
parser.on('--configure', 'Deprecated. Use --init instead.') do |cmd|
|
76
|
+
warn "--configure is deprecated with no effect. Use --init instead."
|
77
|
+
exit
|
78
|
+
end
|
89
79
|
|
90
|
-
|
91
|
-
|
92
|
-
|
80
|
+
parser.separator("\n **** Output ****\n\n")
|
81
|
+
|
82
|
+
parser.on('-f', '--format FORMATTER', 'Choose a formatter.',
|
83
|
+
' [p]rogress (default - dots)',
|
84
|
+
' [d]ocumentation (group and example names)',
|
85
|
+
' [h]tml',
|
86
|
+
' [t]extmate',
|
87
|
+
' [j]son',
|
88
|
+
' custom formatter class name') do |o|
|
89
|
+
options[:formatters] ||= []
|
90
|
+
options[:formatters] << [o]
|
91
|
+
end
|
93
92
|
|
94
|
-
|
95
|
-
|
96
|
-
|
93
|
+
parser.on('-o', '--out FILE',
|
94
|
+
'Write output to a file instead of $stdout. This option applies',
|
95
|
+
' to the previously specified --format, or the default format',
|
96
|
+
' if no format is specified.'
|
97
|
+
) do |o|
|
98
|
+
options[:formatters] ||= [['progress']]
|
99
|
+
options[:formatters].last << o
|
100
|
+
end
|
101
|
+
|
102
|
+
parser.on('-b', '--backtrace', 'Enable full backtrace.') do |o|
|
103
|
+
options[:full_backtrace] = true
|
104
|
+
end
|
105
|
+
|
106
|
+
parser.on('-c', '--[no-]color', '--[no-]colour', 'Enable color in the output.') do |o|
|
107
|
+
options[:color] = o
|
108
|
+
end
|
97
109
|
|
98
|
-
|
99
|
-
|
100
|
-
true
|
101
|
-
elsif argument == false
|
102
|
-
false
|
103
|
-
else
|
104
|
-
begin
|
105
|
-
Integer(argument)
|
106
|
-
rescue ArgumentError
|
107
|
-
RSpec.warning "Non integer specified as profile count, seperate " +
|
108
|
-
"your path from options with -- e.g. " +
|
109
|
-
"`rspec --profile -- #{argument}`",
|
110
|
-
:call_site => nil
|
110
|
+
parser.on('-p', '--[no-]profile [COUNT]', 'Enable profiling of examples and list the slowest examples (default: 10).') do |argument|
|
111
|
+
options[:profile_examples] = if argument.nil?
|
111
112
|
true
|
113
|
+
elsif argument == false
|
114
|
+
false
|
115
|
+
else
|
116
|
+
begin
|
117
|
+
Integer(argument)
|
118
|
+
rescue ArgumentError
|
119
|
+
Kernel.warn "Non integer specified as profile count, seperate " +
|
120
|
+
"your path from options with -- e.g. " +
|
121
|
+
"`rspec --profile -- #{argument}`"
|
122
|
+
true
|
123
|
+
end
|
112
124
|
end
|
113
|
-
|
114
|
-
end
|
125
|
+
end
|
115
126
|
|
116
|
-
|
117
|
-
|
118
|
-
|
127
|
+
parser.on('-w', '--warnings', 'Enable ruby warnings') do
|
128
|
+
options[:warnings] = true
|
129
|
+
end
|
119
130
|
|
120
|
-
|
121
|
-
options[:thread_maximum] = if !n.nil?
|
122
|
-
begin
|
123
|
-
Integer(n)
|
124
|
-
rescue ArgumentError
|
125
|
-
RSpec.warning "Non integer specified as number of parallel threads, seperate " +
|
126
|
-
"your path from options with a space e.g. " +
|
127
|
-
"`rspec --parallel-test #{n}`",
|
128
|
-
:call_site => nil
|
129
|
-
1
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
131
|
+
parser.separator <<-FILTERING
|
133
132
|
|
134
|
-
|
133
|
+
**** Filtering/tags ****
|
135
134
|
|
136
|
-
|
135
|
+
In addition to the following options for selecting specific files, groups,
|
136
|
+
or examples, you can select a single example by appending the line number to
|
137
|
+
the filename:
|
137
138
|
|
138
|
-
|
139
|
-
or examples, you can select a single example by appending the line number to
|
140
|
-
the filename:
|
139
|
+
rspec path/to/a_spec.rb:37
|
141
140
|
|
142
|
-
|
141
|
+
FILTERING
|
143
142
|
|
144
|
-
|
143
|
+
parser.on('-P', '--pattern PATTERN', 'Load files matching pattern (default: "spec/**/*_spec.rb").') do |o|
|
144
|
+
options[:pattern] = o
|
145
|
+
end
|
145
146
|
|
146
|
-
|
147
|
-
|
148
|
-
|
147
|
+
parser.on('-e', '--example STRING', "Run examples whose full nested names include STRING (may be",
|
148
|
+
" used more than once)") do |o|
|
149
|
+
(options[:full_description] ||= []) << Regexp.compile(Regexp.escape(o))
|
150
|
+
end
|
149
151
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
152
|
+
parser.on('-l', '--line-number LINE', 'Specify line number of an example or group (may be',
|
153
|
+
' used more than once).') do |o|
|
154
|
+
(options[:line_numbers] ||= []) << o
|
155
|
+
end
|
154
156
|
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
name,value = tag.gsub(/^(~@|~|@)/, '').split(':',2)
|
163
|
-
name = name.to_sym
|
164
|
-
|
165
|
-
options[filter_type] ||= {}
|
166
|
-
options[filter_type][name] = case value
|
167
|
-
when nil then true # The default value for tags is true
|
168
|
-
when 'true' then true
|
169
|
-
when 'false' then false
|
170
|
-
when 'nil' then nil
|
171
|
-
when /^:/ then value[1..-1].to_sym
|
172
|
-
when /^\d+$/ then Integer(value)
|
173
|
-
when /^\d+.\d+$/ then Float(value)
|
174
|
-
else
|
175
|
-
value
|
176
|
-
end
|
177
|
-
end
|
157
|
+
parser.on('-t', '--tag TAG[:VALUE]',
|
158
|
+
'Run examples with the specified tag, or exclude examples',
|
159
|
+
'by adding ~ before the tag.',
|
160
|
+
' - e.g. ~slow',
|
161
|
+
' - TAG is always converted to a symbol') do |tag|
|
162
|
+
filter_type = tag =~ /^~/ ? :exclusion_filter : :inclusion_filter
|
178
163
|
|
179
|
-
|
180
|
-
|
181
|
-
options[:default_path] = path
|
182
|
-
end
|
164
|
+
name,value = tag.gsub(/^(~@|~|@)/, '').split(':')
|
165
|
+
name = name.to_sym
|
183
166
|
|
184
|
-
|
167
|
+
options[filter_type] ||= {}
|
168
|
+
options[filter_type][name] = value.nil? ? true : eval(value) rescue value
|
169
|
+
end
|
185
170
|
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
171
|
+
parser.on('--default-path PATH', 'Set the default path where RSpec looks for examples (can',
|
172
|
+
' be a path to a file or a directory).') do |path|
|
173
|
+
options[:default_path] = path
|
174
|
+
end
|
190
175
|
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
176
|
+
parser.separator("\n **** Utility ****\n\n")
|
177
|
+
|
178
|
+
parser.on('--parallel-test NUMBER', 'Run the tests with the specified number of parallel threads (default: 1).') do |n|
|
179
|
+
options[:thread_maximum] = if !n.nil?
|
180
|
+
begin
|
181
|
+
Integer(n)
|
182
|
+
rescue ArgumentError
|
183
|
+
RSpec.warning "Non integer specified as number of parallel threads, seperate " +
|
184
|
+
"your path from options with a space e.g. " +
|
185
|
+
"`rspec --parallel-test #{n}`",
|
186
|
+
:call_site => nil
|
187
|
+
1
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
195
191
|
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
end
|
192
|
+
parser.on('-v', '--version', 'Display the version.') do
|
193
|
+
puts RSpec::Parallel::Version::STRING
|
194
|
+
exit
|
195
|
+
end
|
201
196
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
raise OptionParser::InvalidOption.new
|
197
|
+
parser.on_tail('-h', '--help', "You're looking at it.") do
|
198
|
+
puts parser
|
199
|
+
exit
|
206
200
|
end
|
207
201
|
end
|
208
|
-
|
209
202
|
end
|
210
203
|
end
|
211
|
-
end
|
212
204
|
end
|
213
205
|
end
|
@@ -19,10 +19,10 @@ module RSpec
|
|
19
19
|
# * +Fixnum+ - exit status code (0/1)
|
20
20
|
def self.run(args, err=$stderr, out=$stdout)
|
21
21
|
trap_interrupt
|
22
|
-
options = ConfigurationOptions.new(args)
|
22
|
+
options = RSpec::Parallel::ConfigurationOptions.new(args)
|
23
23
|
options.parse_options
|
24
|
-
|
25
24
|
parallel = (options.options[:thread_maximum].nil?) ? false : true
|
25
|
+
|
26
26
|
drb = options.options[:drb]
|
27
27
|
|
28
28
|
if drb
|
@@ -38,9 +38,9 @@ module RSpec
|
|
38
38
|
unless drb
|
39
39
|
if parallel
|
40
40
|
require 'thread'
|
41
|
-
CommandLine.new(options).
|
41
|
+
RSpec::Parallel::CommandLine.new(options).run(err, out)
|
42
42
|
else
|
43
|
-
CommandLine.new(options).run(err, out)
|
43
|
+
RSpec::Core::CommandLine.new(options).run(err, out)
|
44
44
|
end
|
45
45
|
end
|
46
46
|
ensure
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-parallel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.14.8.
|
5
|
-
prerelease:
|
4
|
+
version: 2.14.8.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jason Holt Smith
|
@@ -14,7 +13,6 @@ dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rspec
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -35,8 +32,8 @@ executables:
|
|
35
32
|
extensions: []
|
36
33
|
extra_rdoc_files: []
|
37
34
|
files:
|
35
|
+
- bin/rspec
|
38
36
|
- lib/rspec/parallel.rb
|
39
|
-
- lib/rspec/parallel/autorun.rb
|
40
37
|
- lib/rspec/parallel/command_line.rb
|
41
38
|
- lib/rspec/parallel/configuration.rb
|
42
39
|
- lib/rspec/parallel/configuration_options.rb
|
@@ -45,31 +42,30 @@ files:
|
|
45
42
|
- lib/rspec/parallel/option_parser.rb
|
46
43
|
- lib/rspec/parallel/runner.rb
|
47
44
|
- lib/rspec/parallel/version.rb
|
48
|
-
-
|
45
|
+
- lib/rspec/parallel_autorun.rb
|
49
46
|
homepage: https://github.com/bicarbon8/rspec-parallel.git
|
50
47
|
licenses:
|
51
48
|
- MIT
|
49
|
+
metadata: {}
|
52
50
|
post_install_message:
|
53
51
|
rdoc_options: []
|
54
52
|
require_paths:
|
55
53
|
- lib
|
56
54
|
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
55
|
requirements:
|
59
56
|
- - ! '>='
|
60
57
|
- !ruby/object:Gem::Version
|
61
58
|
version: 1.8.7
|
62
59
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
|
-
none: false
|
64
60
|
requirements:
|
65
61
|
- - ! '>='
|
66
62
|
- !ruby/object:Gem::Version
|
67
63
|
version: '0'
|
68
64
|
requirements: []
|
69
65
|
rubyforge_project:
|
70
|
-
rubygems_version:
|
66
|
+
rubygems_version: 2.2.1
|
71
67
|
signing_key:
|
72
|
-
specification_version:
|
68
|
+
specification_version: 4
|
73
69
|
summary: Parallel rspec execution gem
|
74
70
|
test_files: []
|
75
71
|
has_rdoc:
|