rspec-multiprocess_runner 1.4.1 → 1.4.2
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 +4 -4
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +22 -22
- data/lib/rspec/multiprocess_runner/coordinator.rb +21 -3
- data/lib/rspec/multiprocess_runner/file_coordinator.rb +1 -1
- data/lib/rspec/multiprocess_runner/reporting_formatter.rb +7 -0
- data/lib/rspec/multiprocess_runner/version.rb +1 -1
- data/lib/rspec/multiprocess_runner/worker.rb +19 -4
- data/rspec-multiprocess_runner.gemspec +2 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2ee952287e85072086a4feab9909db4e61d6cafcc3bc6b574795f368e9b4010c
|
4
|
+
data.tar.gz: 65a2d11400a0604631eed4cb6dc7df62307b5bd9914a3d768a3bff3316960a11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52295ede507181b2b4f6a738131b3f279845076010421364e22aec501660a7e9ad442fda17723ec9f39f6247ee6f6d371ba0a32cafd8589404d8ce074ec40b1a
|
7
|
+
data.tar.gz: 86e482ce416b01185b3e4eed3bd3edaac850155c9d3353d0108cf5a14429329847ff1d741a3319faebcfd9fca22830569bafb87de7031c59b58fd01e2d97bb40
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# 1.4.2
|
2
|
+
|
3
|
+
* Add better logging for errors that occur outside of tests
|
4
|
+
* Add docker tests for all current ruby versions and more ruby versions to test in
|
5
|
+
* Fix some minor bugs that caused incorrect error codes (still failure codes)
|
6
|
+
* Fixed the error code spec file
|
7
|
+
|
1
8
|
# 1.4.1
|
2
9
|
|
3
10
|
* Fix file coordinator helpers failing due to unknown method on command line args
|
data/Gemfile.lock
CHANGED
@@ -1,36 +1,36 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rspec-multiprocess_runner (1.4.
|
4
|
+
rspec-multiprocess_runner (1.4.2)
|
5
5
|
rspec (>= 3.0)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
byebug (11.
|
10
|
+
byebug (11.1.3)
|
11
11
|
coderay (1.1.2)
|
12
12
|
diff-lcs (1.3)
|
13
|
-
method_source (0.
|
14
|
-
pry (0.
|
15
|
-
coderay (~> 1.1
|
16
|
-
method_source (~>
|
17
|
-
pry-byebug (3.
|
13
|
+
method_source (1.0.0)
|
14
|
+
pry (0.13.1)
|
15
|
+
coderay (~> 1.1)
|
16
|
+
method_source (~> 1.0)
|
17
|
+
pry-byebug (3.9.0)
|
18
18
|
byebug (~> 11.0)
|
19
|
-
pry (~> 0.
|
20
|
-
rake (
|
21
|
-
rspec (3.
|
22
|
-
rspec-core (~> 3.
|
23
|
-
rspec-expectations (~> 3.
|
24
|
-
rspec-mocks (~> 3.
|
25
|
-
rspec-core (3.
|
26
|
-
rspec-support (~> 3.
|
27
|
-
rspec-expectations (3.
|
19
|
+
pry (~> 0.13.0)
|
20
|
+
rake (13.0.1)
|
21
|
+
rspec (3.9.0)
|
22
|
+
rspec-core (~> 3.9.0)
|
23
|
+
rspec-expectations (~> 3.9.0)
|
24
|
+
rspec-mocks (~> 3.9.0)
|
25
|
+
rspec-core (3.9.2)
|
26
|
+
rspec-support (~> 3.9.3)
|
27
|
+
rspec-expectations (3.9.2)
|
28
28
|
diff-lcs (>= 1.2.0, < 2.0)
|
29
|
-
rspec-support (~> 3.
|
30
|
-
rspec-mocks (3.
|
29
|
+
rspec-support (~> 3.9.0)
|
30
|
+
rspec-mocks (3.9.1)
|
31
31
|
diff-lcs (>= 1.2.0, < 2.0)
|
32
|
-
rspec-support (~> 3.
|
33
|
-
rspec-support (3.
|
32
|
+
rspec-support (~> 3.9.0)
|
33
|
+
rspec-support (3.9.3)
|
34
34
|
stub_env (1.0.4)
|
35
35
|
rspec (>= 2.0, < 4.0)
|
36
36
|
|
@@ -40,9 +40,9 @@ PLATFORMS
|
|
40
40
|
DEPENDENCIES
|
41
41
|
bundler (>= 1.10)
|
42
42
|
pry-byebug
|
43
|
-
rake (
|
43
|
+
rake (>= 12.3.3)
|
44
44
|
rspec-multiprocess_runner!
|
45
45
|
stub_env
|
46
46
|
|
47
47
|
BUNDLED WITH
|
48
|
-
2.
|
48
|
+
2.1.4
|
@@ -41,7 +41,7 @@ module RSpec::MultiprocessRunner
|
|
41
41
|
def exit_code
|
42
42
|
exit_code = 0
|
43
43
|
exit_code |= 1 if any_example_failed?
|
44
|
-
exit_code |= 2 if
|
44
|
+
exit_code |= 2 if failed_workers.any? || error_messages.any?
|
45
45
|
exit_code |= 4 if work_left_to_do? || @file_coordinator.missing_files.any?
|
46
46
|
exit_code
|
47
47
|
end
|
@@ -52,10 +52,10 @@ module RSpec::MultiprocessRunner
|
|
52
52
|
end_workers_in_parallel(@workers.dup, :kill_now)
|
53
53
|
else
|
54
54
|
@shutting_down = true
|
55
|
-
print "Shutting down #{pluralize(@workers.size, "worker")} …" if options
|
55
|
+
print "Shutting down #{pluralize(@workers.size, "worker")} …" if options[:print_summary]
|
56
56
|
# end_workers_in_parallel modifies @workers, so dup before sending in
|
57
57
|
end_workers_in_parallel(@workers.dup, :shutdown_now)
|
58
|
-
if options
|
58
|
+
if options[:print_summary]
|
59
59
|
puts " done"
|
60
60
|
print_summary
|
61
61
|
end
|
@@ -221,6 +221,7 @@ module RSpec::MultiprocessRunner
|
|
221
221
|
print_missing_files(output)
|
222
222
|
log_failed_files(output, by_status_and_time["failed"].map(&:filename).uniq + @file_coordinator.missing_files.to_a) if options.log_failing_files
|
223
223
|
print_failed_process_details(output)
|
224
|
+
print_error_messages(output)
|
224
225
|
output.puts
|
225
226
|
print_elapsed_time(output, elapsed)
|
226
227
|
output.puts failed? ? "FAILURE" : "SUCCESS"
|
@@ -233,6 +234,10 @@ module RSpec::MultiprocessRunner
|
|
233
234
|
@file_coordinator.results.select { |r| r.run_status == "example_complete" }.sort_by { |r| r.time_finished }
|
234
235
|
end
|
235
236
|
|
237
|
+
def error_messages
|
238
|
+
@file_coordinator.results.select { |r| r.run_status == "error_running" }.sort_by { |r| r.time_finished }
|
239
|
+
end
|
240
|
+
|
236
241
|
def any_example_failed?
|
237
242
|
@file_coordinator.results.detect { |r| r.status == "failed" }
|
238
243
|
end
|
@@ -290,6 +295,7 @@ module RSpec::MultiprocessRunner
|
|
290
295
|
pending_count = by_status_and_time["pending"] ? by_status_and_time["pending"].size : 0
|
291
296
|
missing_count = @file_coordinator.missing_files.size
|
292
297
|
process_failure_count = failed_workers.size
|
298
|
+
error_count = error_messages.size
|
293
299
|
skipped_count = @file_coordinator.remaining_files.size
|
294
300
|
|
295
301
|
# Copied from RSpec
|
@@ -297,6 +303,7 @@ module RSpec::MultiprocessRunner
|
|
297
303
|
summary << ", " << pluralize(failure_count, "failure")
|
298
304
|
summary << ", #{pending_count} pending" if pending_count > 0
|
299
305
|
summary << ", " << pluralize(process_failure_count, "failed proc") if process_failure_count > 0
|
306
|
+
summary << ", " << pluralize(error_count, "error") if error_count > 0
|
300
307
|
summary << ", " << pluralize(skipped_count, "skipped file") if skipped_count > 0
|
301
308
|
summary << ", " << pluralize(missing_count, "missing file") if missing_count > 0
|
302
309
|
output.puts summary
|
@@ -311,6 +318,17 @@ module RSpec::MultiprocessRunner
|
|
311
318
|
end
|
312
319
|
end
|
313
320
|
|
321
|
+
def print_error_messages(output)
|
322
|
+
return if error_messages.nil?
|
323
|
+
output.puts
|
324
|
+
output.puts "Errors:"
|
325
|
+
error_messages.each_with_index do |error, i|
|
326
|
+
output.puts
|
327
|
+
output.puts " #{i.next}) #{error.filename}"
|
328
|
+
output.print error.message
|
329
|
+
end
|
330
|
+
end
|
331
|
+
|
314
332
|
def print_missing_files(output)
|
315
333
|
return if @file_coordinator.missing_files.empty?
|
316
334
|
output.puts
|
@@ -70,7 +70,7 @@ module RSpec::MultiprocessRunner
|
|
70
70
|
else
|
71
71
|
return nil # Malformed response, assume done, cease function
|
72
72
|
end
|
73
|
-
rescue
|
73
|
+
rescue StandardError => e
|
74
74
|
puts("Got exception #{e} in get_file")
|
75
75
|
return nil # If Error, assume done, cease function
|
76
76
|
end
|
@@ -29,6 +29,7 @@ module RSpec::MultiprocessRunner
|
|
29
29
|
|
30
30
|
STATUS_EXAMPLE_COMPLETE = "example_complete"
|
31
31
|
STATUS_RUN_COMPLETE = "run_complete"
|
32
|
+
ERROR_RUNNING = "error_running"
|
32
33
|
|
33
34
|
def initialize(environment_number, options)
|
34
35
|
@environment_number = environment_number
|
@@ -196,6 +197,10 @@ module RSpec::MultiprocessRunner
|
|
196
197
|
end
|
197
198
|
$stdout.puts "#{environment_number} (#{pid}): #{message_hash["description"]} (#{location})#{suffix}"
|
198
199
|
@current_example_started_at = Time.now
|
200
|
+
when ERROR_RUNNING
|
201
|
+
example_results << Result.new(message_hash)
|
202
|
+
$stdout.puts "Error in file: #{message_hash["filename"]}"
|
203
|
+
$stdout.print message_hash["message"]
|
199
204
|
else
|
200
205
|
$stderr.puts "Received unsupported status #{message_hash["status"].inspect} in worker #{pid}"
|
201
206
|
end
|
@@ -219,7 +224,15 @@ module RSpec::MultiprocessRunner
|
|
219
224
|
description: description,
|
220
225
|
line_number: line_number,
|
221
226
|
details: details,
|
222
|
-
filename: @current_file
|
227
|
+
filename: @current_file,
|
228
|
+
)
|
229
|
+
end
|
230
|
+
|
231
|
+
def report_error(message)
|
232
|
+
send_message_to_coordinator(
|
233
|
+
status: ERROR_RUNNING,
|
234
|
+
message: message,
|
235
|
+
filename: @current_file,
|
223
236
|
)
|
224
237
|
end
|
225
238
|
|
@@ -281,8 +294,9 @@ module RSpec::MultiprocessRunner
|
|
281
294
|
RSpec.world.example_groups.clear
|
282
295
|
|
283
296
|
ReportingFormatter.worker = self
|
284
|
-
|
285
|
-
|
297
|
+
error_stream = StringIO.new
|
298
|
+
output_stream = StringIO.new
|
299
|
+
RSpec::Core::Runner.run(@rspec_arguments + [spec_file], error_stream, output_stream)
|
286
300
|
send_message_to_coordinator(status: STATUS_RUN_COMPLETE, filename: spec_file)
|
287
301
|
ensure
|
288
302
|
@current_file = nil
|
@@ -323,7 +337,7 @@ module RSpec::MultiprocessRunner
|
|
323
337
|
|
324
338
|
# @private
|
325
339
|
class Result
|
326
|
-
attr_reader :
|
340
|
+
attr_reader :description, :details, :filename, :message, :run_status, :status, :time_finished
|
327
341
|
|
328
342
|
def initialize(complete_message, time = Time.now)
|
329
343
|
@hash = complete_message
|
@@ -332,6 +346,7 @@ module RSpec::MultiprocessRunner
|
|
332
346
|
@description = complete_message["description"]
|
333
347
|
@details = complete_message["details"]
|
334
348
|
@filename = complete_message["filename"]
|
349
|
+
@message = complete_message["message"]
|
335
350
|
@time_finished = time
|
336
351
|
end
|
337
352
|
|
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
|
23
23
|
spec.add_development_dependency "bundler", ">= 1.10"
|
24
24
|
spec.add_development_dependency "pry-byebug"
|
25
|
-
spec.add_development_dependency "
|
25
|
+
spec.add_development_dependency "byebug", "<11" if RUBY_VERSION.to_f < 2.4
|
26
|
+
spec.add_development_dependency "rake", ">= 12.3.3"
|
26
27
|
spec.add_development_dependency "stub_env"
|
27
28
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-multiprocess_runner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rhett Sutphin
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2020-05-27 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rspec
|
@@ -59,16 +59,16 @@ dependencies:
|
|
59
59
|
name: rake
|
60
60
|
requirement: !ruby/object:Gem::Requirement
|
61
61
|
requirements:
|
62
|
-
- - "
|
62
|
+
- - ">="
|
63
63
|
- !ruby/object:Gem::Version
|
64
|
-
version:
|
64
|
+
version: 12.3.3
|
65
65
|
type: :development
|
66
66
|
prerelease: false
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
68
68
|
requirements:
|
69
|
-
- - "
|
69
|
+
- - ">="
|
70
70
|
- !ruby/object:Gem::Version
|
71
|
-
version:
|
71
|
+
version: 12.3.3
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
73
|
name: stub_env
|
74
74
|
requirement: !ruby/object:Gem::Requirement
|
@@ -131,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
131
131
|
- !ruby/object:Gem::Version
|
132
132
|
version: '0'
|
133
133
|
requirements: []
|
134
|
-
rubygems_version: 3.0.
|
134
|
+
rubygems_version: 3.0.3
|
135
135
|
signing_key:
|
136
136
|
specification_version: 4
|
137
137
|
summary: A runner for RSpec 3 that uses multiple processes to execute specs in parallel
|