rspec-multiprocess_runner 1.2.3 → 1.3.0
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 +5 -5
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +48 -0
- data/exe/multirspec +1 -13
- data/lib/rspec/multiprocess_runner/command_line_options.rb +6 -2
- data/lib/rspec/multiprocess_runner/coordinator.rb +53 -58
- data/lib/rspec/multiprocess_runner/file_coordinator.rb +12 -14
- data/lib/rspec/multiprocess_runner/version.rb +1 -1
- data/lib/rspec/multiprocess_runner/worker.rb +8 -10
- data/rspec-multiprocess_runner.gemspec +5 -5
- metadata +12 -11
- data/.gitignore +0 -13
- data/.rspec +0 -2
- data/.travis.yml +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2f561425e9f9c62eba1610b84278f1f3d86a5448d0c671324125bb88c0150f81
|
4
|
+
data.tar.gz: 3b79c2b0e07224cc2fe64204b0adf5e7ca90099846e84cc2078ad771c617c05d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea71c613e8309da1d384f2c04778dce6871131bfa623ab4edabd4df6226d3393b39b6a1d3f688146881827650c56490a5b688139ba5c8bbcb76a199bced318d5
|
7
|
+
data.tar.gz: 0db27a58d409e7485c4c4ae934f59f53ea86d63fa2125194813fbbefdd28f39db90ea59355cf205e6b39610f344b99447d112d72adc293a12b303f29b2df1f1c
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
rspec-multiprocess_runner (1.3.0)
|
5
|
+
rspec (>= 3.0)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
byebug (11.0.1)
|
11
|
+
coderay (1.1.2)
|
12
|
+
diff-lcs (1.3)
|
13
|
+
method_source (0.9.2)
|
14
|
+
pry (0.12.2)
|
15
|
+
coderay (~> 1.1.0)
|
16
|
+
method_source (~> 0.9.0)
|
17
|
+
pry-byebug (3.7.0)
|
18
|
+
byebug (~> 11.0)
|
19
|
+
pry (~> 0.10)
|
20
|
+
rake (10.5.0)
|
21
|
+
rspec (3.8.0)
|
22
|
+
rspec-core (~> 3.8.0)
|
23
|
+
rspec-expectations (~> 3.8.0)
|
24
|
+
rspec-mocks (~> 3.8.0)
|
25
|
+
rspec-core (3.8.2)
|
26
|
+
rspec-support (~> 3.8.0)
|
27
|
+
rspec-expectations (3.8.5)
|
28
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
29
|
+
rspec-support (~> 3.8.0)
|
30
|
+
rspec-mocks (3.8.2)
|
31
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
32
|
+
rspec-support (~> 3.8.0)
|
33
|
+
rspec-support (3.8.3)
|
34
|
+
stub_env (1.0.4)
|
35
|
+
rspec (>= 2.0, < 4.0)
|
36
|
+
|
37
|
+
PLATFORMS
|
38
|
+
ruby
|
39
|
+
|
40
|
+
DEPENDENCIES
|
41
|
+
bundler (>= 1.10)
|
42
|
+
pry-byebug
|
43
|
+
rake (~> 10.0)
|
44
|
+
rspec-multiprocess_runner!
|
45
|
+
stub_env
|
46
|
+
|
47
|
+
BUNDLED WITH
|
48
|
+
2.0.2
|
data/exe/multirspec
CHANGED
@@ -9,19 +9,7 @@ exit(64) unless options
|
|
9
9
|
coordinator = RSpec::MultiprocessRunner::Coordinator.new(
|
10
10
|
options.worker_count,
|
11
11
|
options.files_to_run,
|
12
|
-
|
13
|
-
file_timeout_seconds: options.file_timeout_seconds,
|
14
|
-
example_timeout_seconds: options.example_timeout_seconds,
|
15
|
-
test_env_number_first_is_1: options.first_is_1,
|
16
|
-
rspec_options: options.rspec_options,
|
17
|
-
log_failing_files: options.log_failing_files,
|
18
|
-
use_given_order: options.use_given_order,
|
19
|
-
head_node: options.head_node,
|
20
|
-
port: options.port,
|
21
|
-
hostname: options.hostname,
|
22
|
-
max_nodes: options.max_nodes,
|
23
|
-
run_identifier: options.run_identifier
|
24
|
-
}
|
12
|
+
options
|
25
13
|
)
|
26
14
|
|
27
15
|
trap("INT") do
|
@@ -3,12 +3,11 @@ require 'optparse'
|
|
3
3
|
require 'pathname'
|
4
4
|
|
5
5
|
module RSpec::MultiprocessRunner
|
6
|
-
# @private
|
7
6
|
class CommandLineOptions
|
8
7
|
attr_accessor :worker_count, :file_timeout_seconds, :example_timeout_seconds,
|
9
8
|
:rspec_options, :explicit_files_or_directories, :pattern, :log_failing_files,
|
10
9
|
:first_is_1, :use_given_order, :port, :head_node, :hostname, :max_nodes,
|
11
|
-
:run_identifier
|
10
|
+
:run_identifier, :summary_filename
|
12
11
|
|
13
12
|
DEFAULT_WORKER_COUNT = 3
|
14
13
|
|
@@ -25,6 +24,7 @@ module RSpec::MultiprocessRunner
|
|
25
24
|
self.hostname = "localhost"
|
26
25
|
self.head_node = true
|
27
26
|
self.max_nodes = 5
|
27
|
+
self.summary_filename = nil
|
28
28
|
end
|
29
29
|
|
30
30
|
def parse(command_line_args, error_stream=$stderr)
|
@@ -144,6 +144,10 @@ module RSpec::MultiprocessRunner
|
|
144
144
|
self.run_identifier = string
|
145
145
|
end
|
146
146
|
|
147
|
+
parser.on("-f", "--summary-filename STRING", "Save summary to a file") do |string|
|
148
|
+
self.summary_filename = string
|
149
|
+
end
|
150
|
+
|
147
151
|
parser.on_tail("-h", "--help", "Prints this help") do
|
148
152
|
help_requested!
|
149
153
|
end
|
@@ -5,13 +5,10 @@ require 'rspec/multiprocess_runner/file_coordinator'
|
|
5
5
|
|
6
6
|
module RSpec::MultiprocessRunner
|
7
7
|
class Coordinator
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
@test_env_number_first_is_1 = options[:test_env_number_first_is_1]
|
13
|
-
@log_failing_files = options[:log_failing_files]
|
14
|
-
@rspec_options = options[:rspec_options]
|
8
|
+
attr_accessor :options
|
9
|
+
|
10
|
+
def initialize(worker_count, files, options)
|
11
|
+
self.options = options
|
15
12
|
@file_buffer = []
|
16
13
|
@workers = []
|
17
14
|
@stopped_workers = []
|
@@ -55,10 +52,10 @@ module RSpec::MultiprocessRunner
|
|
55
52
|
end_workers_in_parallel(@workers.dup, :kill_now)
|
56
53
|
else
|
57
54
|
@shutting_down = true
|
58
|
-
print "Shutting down #{pluralize(@workers.size, "worker")} …" if options
|
55
|
+
print "Shutting down #{pluralize(@workers.size, "worker")} …" if options.print_summary
|
59
56
|
# end_workers_in_parallel modifies @workers, so dup before sending in
|
60
57
|
end_workers_in_parallel(@workers.dup, :shutdown_now)
|
61
|
-
if options
|
58
|
+
if options.print_summary
|
62
59
|
puts " done"
|
63
60
|
print_summary
|
64
61
|
end
|
@@ -175,19 +172,13 @@ module RSpec::MultiprocessRunner
|
|
175
172
|
end
|
176
173
|
|
177
174
|
def expected_worker_numbers
|
178
|
-
(1
|
175
|
+
(1..options.worker_count).to_a
|
179
176
|
end
|
180
177
|
|
181
178
|
def create_and_start_worker_if_necessary(n)
|
182
179
|
if work_left_to_do?
|
183
180
|
$stderr.puts "(Re)starting worker #{n}"
|
184
|
-
new_worker = Worker.new(
|
185
|
-
n,
|
186
|
-
file_timeout_seconds: @file_timeout_seconds,
|
187
|
-
example_timeout_seconds: @example_timeout_seconds,
|
188
|
-
rspec_options: @rspec_options,
|
189
|
-
test_env_number_first_is_1: @test_env_number_first_is_1
|
190
|
-
)
|
181
|
+
new_worker = Worker.new(n, options)
|
191
182
|
@workers << new_worker
|
192
183
|
new_worker.start
|
193
184
|
file = get_file
|
@@ -196,7 +187,7 @@ module RSpec::MultiprocessRunner
|
|
196
187
|
end
|
197
188
|
|
198
189
|
def start_missing_workers
|
199
|
-
if @workers.size <
|
190
|
+
if @workers.size < options.worker_count && work_left_to_do?
|
200
191
|
running_process_numbers = @workers.map(&:environment_number)
|
201
192
|
missing_process_numbers = expected_worker_numbers - running_process_numbers
|
202
193
|
missing_process_numbers.each do |n|
|
@@ -218,16 +209,20 @@ module RSpec::MultiprocessRunner
|
|
218
209
|
idx[result.status] << result
|
219
210
|
end
|
220
211
|
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
212
|
+
outputs = [STDOUT]
|
213
|
+
outputs << File.new(options.summary_filename, 'w') if (options.summary_filename)
|
214
|
+
outputs.each do |output|
|
215
|
+
print_skipped_files_details(output)
|
216
|
+
print_pending_example_details(output, by_status_and_time["pending"])
|
217
|
+
print_failed_example_details(output, by_status_and_time["failed"])
|
218
|
+
print_missing_files(output)
|
219
|
+
log_failed_files(by_status_and_time["failed"].map(&:filename).uniq + @file_coordinator.missing_files.to_a) if options.log_failing_files
|
220
|
+
print_failed_process_details(output)
|
221
|
+
output.puts
|
222
|
+
print_elapsed_time(output, elapsed)
|
223
|
+
output.puts failed? ? "FAILURE" : "SUCCESS"
|
224
|
+
print_example_counts(output, by_status_and_time)
|
225
|
+
end
|
231
226
|
end
|
232
227
|
|
233
228
|
def combine_example_results
|
@@ -238,41 +233,41 @@ module RSpec::MultiprocessRunner
|
|
238
233
|
@file_coordinator.results.detect { |r| r.status == "failed" }
|
239
234
|
end
|
240
235
|
|
241
|
-
def print_skipped_files_details
|
236
|
+
def print_skipped_files_details(output)
|
242
237
|
return if !work_left_to_do?
|
243
|
-
puts
|
244
|
-
puts "Skipped files:"
|
238
|
+
output.puts
|
239
|
+
output.puts "Skipped files:"
|
245
240
|
@file_coordinator.remaining_files.each do |spec_file|
|
246
|
-
puts " - #{spec_file}"
|
241
|
+
output.puts " - #{spec_file}"
|
247
242
|
end
|
248
243
|
end
|
249
244
|
|
250
|
-
def print_pending_example_details(pending_example_results)
|
245
|
+
def print_pending_example_details(output, pending_example_results)
|
251
246
|
return if pending_example_results.nil?
|
252
|
-
puts
|
253
|
-
puts "Pending:"
|
247
|
+
output.puts
|
248
|
+
output.puts "Pending:"
|
254
249
|
pending_example_results.each do |pending|
|
255
|
-
puts
|
256
|
-
puts pending.details.sub(/^\s*Pending:\s*/, '')
|
250
|
+
output.puts
|
251
|
+
output.puts pending.details.sub(/^\s*Pending:\s*/, '')
|
257
252
|
end
|
258
253
|
end
|
259
254
|
|
260
|
-
def print_failed_example_details(failed_example_results)
|
255
|
+
def print_failed_example_details(output, failed_example_results)
|
261
256
|
return if failed_example_results.nil?
|
262
|
-
puts
|
263
|
-
puts "Failures:"
|
257
|
+
output.puts
|
258
|
+
output.puts "Failures:"
|
264
259
|
failed_example_results.each_with_index do |failure, i|
|
265
|
-
puts
|
266
|
-
puts " #{i.next}) #{failure.description}"
|
267
|
-
puts failure.details
|
260
|
+
output.puts
|
261
|
+
output.puts " #{i.next}) #{failure.description}"
|
262
|
+
output.puts failure.details
|
268
263
|
end
|
269
264
|
end
|
270
265
|
|
271
266
|
def log_failed_files(failed_files)
|
272
267
|
return if failed_files.nil?
|
273
|
-
puts
|
274
|
-
puts "Writing failures to file: #{
|
275
|
-
File.open(
|
268
|
+
output.puts
|
269
|
+
output.puts "Writing failures to file: #{options.log_failing_files}"
|
270
|
+
File.open(options.log_failing_files, "w+") do |io|
|
276
271
|
failed_files.each do |file|
|
277
272
|
io << file
|
278
273
|
io << "\n"
|
@@ -285,7 +280,7 @@ module RSpec::MultiprocessRunner
|
|
285
280
|
"#{count} #{string}#{'s' unless count.to_f == 1}"
|
286
281
|
end
|
287
282
|
|
288
|
-
def print_example_counts(by_status_and_time)
|
283
|
+
def print_example_counts(output, by_status_and_time)
|
289
284
|
example_count = by_status_and_time.map { |status, results| results.size }.inject(0) { |sum, ct| sum + ct }
|
290
285
|
failure_count = by_status_and_time["failed"] ? by_status_and_time["failed"].size : 0
|
291
286
|
pending_count = by_status_and_time["pending"] ? by_status_and_time["pending"].size : 0
|
@@ -300,26 +295,26 @@ module RSpec::MultiprocessRunner
|
|
300
295
|
summary << ", " << pluralize(process_failure_count, "failed proc") if process_failure_count > 0
|
301
296
|
summary << ", " << pluralize(skipped_count, "skipped file") if skipped_count > 0
|
302
297
|
summary << ", " << pluralize(missing_count, "missing file") if missing_count > 0
|
303
|
-
puts summary
|
298
|
+
output.puts summary
|
304
299
|
end
|
305
300
|
|
306
|
-
def print_failed_process_details
|
301
|
+
def print_failed_process_details(output)
|
307
302
|
return if failed_workers.empty?
|
308
|
-
puts
|
309
|
-
puts "Failed processes:"
|
303
|
+
output.puts
|
304
|
+
output.puts "Failed processes:"
|
310
305
|
failed_workers.each do |worker|
|
311
|
-
puts " - #{worker.node}:#{worker.pid} (env #{worker.environment_number}) #{worker.deactivation_reason} on #{worker.current_file}"
|
306
|
+
output.puts " - #{worker.node}:#{worker.pid} (env #{worker.environment_number}) #{worker.deactivation_reason} on #{worker.current_file}"
|
312
307
|
end
|
313
308
|
end
|
314
309
|
|
315
|
-
def print_missing_files
|
310
|
+
def print_missing_files(output)
|
316
311
|
return if @file_coordinator.missing_files.empty?
|
317
|
-
puts
|
318
|
-
puts "Missing files from disconnects:"
|
319
|
-
@file_coordinator.missing_files.each { |file| puts " + #{file} was given to a node, which disconnected" }
|
312
|
+
output.puts
|
313
|
+
output.puts "Missing files from disconnects:"
|
314
|
+
@file_coordinator.missing_files.each { |file| output.puts " + #{file} was given to a node, which disconnected" }
|
320
315
|
end
|
321
316
|
|
322
|
-
def print_elapsed_time(seconds_elapsed)
|
317
|
+
def print_elapsed_time(output, seconds_elapsed)
|
323
318
|
minutes = seconds_elapsed.to_i / 60
|
324
319
|
seconds = seconds_elapsed % 60
|
325
320
|
m =
|
@@ -330,7 +325,7 @@ module RSpec::MultiprocessRunner
|
|
330
325
|
if seconds > 0
|
331
326
|
"%.2f second%s" % [seconds, seconds == 1 ? '' : 's']
|
332
327
|
end
|
333
|
-
puts "Finished in #{[m, s].compact.join(", ")}"
|
328
|
+
output.puts "Finished in #{[m, s].compact.join(", ")}"
|
334
329
|
end
|
335
330
|
end
|
336
331
|
end
|
@@ -1,10 +1,12 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'rspec/multiprocess_runner'
|
3
3
|
require 'socket'
|
4
|
+
require 'set'
|
4
5
|
|
5
6
|
module RSpec::MultiprocessRunner
|
6
7
|
class FileCoordinator
|
7
8
|
attr_reader :results, :failed_workers
|
9
|
+
attr_accessor :options
|
8
10
|
|
9
11
|
COMMAND_FILE = "file"
|
10
12
|
COMMAND_RESULTS = "results"
|
@@ -17,14 +19,10 @@ module RSpec::MultiprocessRunner
|
|
17
19
|
@results = Set.new
|
18
20
|
@threads = []
|
19
21
|
@failed_workers = []
|
22
|
+
self.options = options
|
20
23
|
@spec_files_reference = files.to_set
|
21
|
-
|
22
|
-
|
23
|
-
@max_threads = options[:max_nodes]
|
24
|
-
@head_node = options[:head_node]
|
25
|
-
@start_string = options[:run_identifier]
|
26
|
-
if @head_node
|
27
|
-
@spec_files = options[:use_given_order] ? files : sort_files(files)
|
24
|
+
if options.head_node
|
25
|
+
@spec_files = options.use_given_order ? files : sort_files(files)
|
28
26
|
Thread.start { run_tcp_server }
|
29
27
|
@node_socket, head_node_socket = Socket.pair(:UNIX, :STREAM)
|
30
28
|
Thread.start { server_connection_established(head_node_socket) }
|
@@ -32,7 +30,7 @@ module RSpec::MultiprocessRunner
|
|
32
30
|
count = 100
|
33
31
|
while @node_socket.nil? do
|
34
32
|
begin
|
35
|
-
@node_socket = TCPSocket.new
|
33
|
+
@node_socket = TCPSocket.new options.hostname, options.port
|
36
34
|
raise unless start?
|
37
35
|
rescue BadStartStringError
|
38
36
|
@node_socket.close if @node_socket
|
@@ -55,7 +53,7 @@ module RSpec::MultiprocessRunner
|
|
55
53
|
end
|
56
54
|
|
57
55
|
def missing_files
|
58
|
-
if
|
56
|
+
if options.head_node
|
59
57
|
@spec_files_reference - @results.map(&:filename) - @failed_workers.map(&:current_file) - @spec_files
|
60
58
|
else
|
61
59
|
[]
|
@@ -85,7 +83,7 @@ module RSpec::MultiprocessRunner
|
|
85
83
|
end
|
86
84
|
|
87
85
|
def finished
|
88
|
-
if
|
86
|
+
if options.head_node
|
89
87
|
if @tcp_server_running
|
90
88
|
@tcp_server_running = false
|
91
89
|
@threads.each(&:join)
|
@@ -108,10 +106,10 @@ module RSpec::MultiprocessRunner
|
|
108
106
|
end
|
109
107
|
|
110
108
|
def run_tcp_server
|
111
|
-
server = TCPServer.new
|
109
|
+
server = TCPServer.new options.port
|
112
110
|
@tcp_server_running = true
|
113
111
|
ObjectSpace.define_finalizer( self, proc { server.close } )
|
114
|
-
while @threads.size <
|
112
|
+
while @threads.size < options.max_nodes && @tcp_server_running
|
115
113
|
@threads << Thread.start(server.accept) do |client|
|
116
114
|
server_connection_established(client) if @tcp_server_running
|
117
115
|
end
|
@@ -124,7 +122,7 @@ module RSpec::MultiprocessRunner
|
|
124
122
|
break unless raw_response
|
125
123
|
command, results, node = JSON.parse(raw_response)
|
126
124
|
if command == COMMAND_START
|
127
|
-
if results ==
|
125
|
+
if results == options.start_string
|
128
126
|
socket.puts COMMAND_START
|
129
127
|
else
|
130
128
|
socket.puts COMMAND_FINISHED
|
@@ -145,7 +143,7 @@ module RSpec::MultiprocessRunner
|
|
145
143
|
|
146
144
|
def start?
|
147
145
|
begin
|
148
|
-
@node_socket.puts [COMMAND_START,
|
146
|
+
@node_socket.puts [COMMAND_START, options.start_string].to_json
|
149
147
|
response = @node_socket.gets
|
150
148
|
response = response.chomp if response
|
151
149
|
raise BadStartStringError if response == COMMAND_FINISHED
|
@@ -22,7 +22,7 @@ module RSpec::MultiprocessRunner
|
|
22
22
|
# @private
|
23
23
|
class Worker
|
24
24
|
attr_reader :pid, :environment_number, :example_results, :current_file
|
25
|
-
attr_accessor :deactivation_reason
|
25
|
+
attr_accessor :deactivation_reason, :options
|
26
26
|
|
27
27
|
COMMAND_QUIT = "quit"
|
28
28
|
COMMAND_RUN_FILE = "run_file"
|
@@ -33,10 +33,8 @@ module RSpec::MultiprocessRunner
|
|
33
33
|
def initialize(environment_number, options)
|
34
34
|
@environment_number = environment_number
|
35
35
|
@worker_socket, @coordinator_socket = Socket.pair(:UNIX, :STREAM)
|
36
|
-
@rspec_arguments = (options
|
37
|
-
|
38
|
-
@file_timeout_seconds = options[:file_timeout_seconds]
|
39
|
-
@test_env_number_first_is_1 = options[:test_env_number_first_is_1]
|
36
|
+
@rspec_arguments = (options.rspec_options || []) + ["--format", ReportingFormatter.to_s]
|
37
|
+
self.options = options
|
40
38
|
@example_results = []
|
41
39
|
end
|
42
40
|
|
@@ -52,7 +50,7 @@ module RSpec::MultiprocessRunner
|
|
52
50
|
end
|
53
51
|
|
54
52
|
def test_env_number
|
55
|
-
if environment_number == 1 &&
|
53
|
+
if environment_number == 1 && !options.first_is_1
|
56
54
|
""
|
57
55
|
else
|
58
56
|
environment_number.to_s
|
@@ -120,12 +118,12 @@ module RSpec::MultiprocessRunner
|
|
120
118
|
|
121
119
|
def stalled?
|
122
120
|
file_stalled =
|
123
|
-
if
|
124
|
-
working? && (Time.now - @current_file_started_at >
|
121
|
+
if options.file_timeout_seconds
|
122
|
+
working? && (Time.now - @current_file_started_at > options.file_timeout_seconds)
|
125
123
|
end
|
126
124
|
example_stalled =
|
127
|
-
if
|
128
|
-
working? && (Time.now - @current_example_started_at >
|
125
|
+
if options.example_timeout_seconds
|
126
|
+
working? && (Time.now - @current_example_started_at > options.example_timeout_seconds)
|
129
127
|
end
|
130
128
|
file_stalled || example_stalled
|
131
129
|
end
|
@@ -6,21 +6,21 @@ require 'rspec/multiprocess_runner/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "rspec-multiprocess_runner"
|
8
8
|
spec.version = RSpec::MultiprocessRunner::VERSION
|
9
|
-
spec.authors = ["Rhett Sutphin"]
|
10
|
-
spec.email = ["
|
9
|
+
spec.authors = ["Rhett Sutphin", 'Jacob Bloom', 'Peter Nyberg', 'Kurt Werle']
|
10
|
+
spec.email = ["rspec-multiprocess_runner@collaborativedrug.com"]
|
11
11
|
|
12
12
|
spec.summary = %q{A runner for RSpec 3 that uses multiple processes to execute specs in parallel}
|
13
13
|
spec.homepage = "https://github.com/cdd/rspec-multiprocess_runner"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
|
-
spec.files =
|
16
|
+
spec.files = Dir.glob('{bin,lib,exe}/**/*') + %w[rspec-multiprocess_runner.gemspec Gemfile Gemfile.lock Rakefile CHANGELOG.md LICENSE.txt README.md TODO.md]
|
17
17
|
spec.bindir = "exe"
|
18
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "rspec", ">=
|
21
|
+
spec.add_dependency "rspec", ">= 3.0"
|
22
22
|
|
23
|
-
spec.add_development_dependency "bundler", "
|
23
|
+
spec.add_development_dependency "bundler", ">= 1.10"
|
24
24
|
spec.add_development_dependency "pry-byebug"
|
25
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
26
|
spec.add_development_dependency "stub_env"
|
metadata
CHANGED
@@ -1,14 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-multiprocess_runner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rhett Sutphin
|
8
|
+
- Jacob Bloom
|
9
|
+
- Peter Nyberg
|
10
|
+
- Kurt Werle
|
8
11
|
autorequire:
|
9
12
|
bindir: exe
|
10
13
|
cert_chain: []
|
11
|
-
date:
|
14
|
+
date: 2019-10-02 00:00:00.000000000 Z
|
12
15
|
dependencies:
|
13
16
|
- !ruby/object:Gem::Dependency
|
14
17
|
name: rspec
|
@@ -16,26 +19,26 @@ dependencies:
|
|
16
19
|
requirements:
|
17
20
|
- - ">="
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
22
|
+
version: '3.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
27
|
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
29
|
+
version: '3.0'
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: bundler
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
30
33
|
requirements:
|
31
|
-
- - "
|
34
|
+
- - ">="
|
32
35
|
- !ruby/object:Gem::Version
|
33
36
|
version: '1.10'
|
34
37
|
type: :development
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
37
40
|
requirements:
|
38
|
-
- - "
|
41
|
+
- - ">="
|
39
42
|
- !ruby/object:Gem::Version
|
40
43
|
version: '1.10'
|
41
44
|
- !ruby/object:Gem::Dependency
|
@@ -82,17 +85,15 @@ dependencies:
|
|
82
85
|
version: '0'
|
83
86
|
description:
|
84
87
|
email:
|
85
|
-
-
|
88
|
+
- rspec-multiprocess_runner@collaborativedrug.com
|
86
89
|
executables:
|
87
90
|
- multirspec
|
88
91
|
extensions: []
|
89
92
|
extra_rdoc_files: []
|
90
93
|
files:
|
91
|
-
- ".gitignore"
|
92
|
-
- ".rspec"
|
93
|
-
- ".travis.yml"
|
94
94
|
- CHANGELOG.md
|
95
95
|
- Gemfile
|
96
|
+
- Gemfile.lock
|
96
97
|
- LICENSE.txt
|
97
98
|
- README.md
|
98
99
|
- Rakefile
|
@@ -131,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
131
132
|
version: '0'
|
132
133
|
requirements: []
|
133
134
|
rubyforge_project:
|
134
|
-
rubygems_version: 2.
|
135
|
+
rubygems_version: 2.7.6.2
|
135
136
|
signing_key:
|
136
137
|
specification_version: 4
|
137
138
|
summary: A runner for RSpec 3 that uses multiple processes to execute specs in parallel
|
data/.gitignore
DELETED
data/.rspec
DELETED