minitest-distributed 0.2.0 → 0.2.1
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/lib/minitest/distributed/configuration.rb +8 -2
- data/lib/minitest/distributed/coordinators/memory_coordinator.rb +3 -2
- data/lib/minitest/distributed/coordinators/redis_coordinator.rb +11 -8
- data/lib/minitest/distributed/enqueued_runnable.rb +15 -10
- data/lib/minitest/distributed/reporters/distributed_progress_reporter.rb +11 -3
- data/lib/minitest/distributed/version.rb +1 -1
- data/lib/minitest/distributed_plugin.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 829613fe27e895208e49a116fd8f72e3685e1e91eb95209db170ad51707d2115
|
4
|
+
data.tar.gz: 1e0932553fe7d007e40392f53f80dd49eb6dafd533077d8234d4feb86629e8d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71dbe335df12886c11af8f438dec954678ad9d5841847e44521e492dfc641eddc76da66e73c0f5d96840f75746e027f3304d08ed46171817a0541d773495b32f
|
7
|
+
data.tar.gz: fb5a8f6f781c71944df6228e4da980b29f2bd01fd9733aebe10437ac8eaa867d7d55b49397ad2d4f1acca9d503e8b2a8191fcfc8f935675a78f9d75208e0a39f
|
@@ -27,9 +27,10 @@ module Minitest
|
|
27
27
|
)
|
28
28
|
end
|
29
29
|
|
30
|
-
sig { params(opts: OptionParser).returns(T.attached_class) }
|
31
|
-
def from_command_line_options(opts)
|
30
|
+
sig { params(opts: OptionParser, options: T::Hash[Symbol, T.untyped]).returns(T.attached_class) }
|
31
|
+
def from_command_line_options(opts, options)
|
32
32
|
configuration = from_env
|
33
|
+
configuration.progress = options[:io].tty?
|
33
34
|
|
34
35
|
opts.on('--coordinator=URI', "The URI pointing to the coordinator") do |uri|
|
35
36
|
configuration.coordinator_uri = URI.parse(uri)
|
@@ -66,6 +67,10 @@ module Minitest
|
|
66
67
|
configuration.retry_failures = enabled
|
67
68
|
end
|
68
69
|
|
70
|
+
opts.on('--[no-]progress', "Show progress during the test run") do |enabled|
|
71
|
+
configuration.progress = enabled
|
72
|
+
end
|
73
|
+
|
69
74
|
configuration
|
70
75
|
end
|
71
76
|
end
|
@@ -80,6 +85,7 @@ module Minitest
|
|
80
85
|
prop :max_attempts, Integer, default: DEFAULT_MAX_ATTEMPTS
|
81
86
|
prop :max_failures, T.nilable(Integer)
|
82
87
|
prop :retry_failures, T::Boolean, default: true
|
88
|
+
prop :progress, T::Boolean, default: false
|
83
89
|
|
84
90
|
sig { returns(Coordinators::CoordinatorInterface) }
|
85
91
|
def coordinator
|
@@ -66,8 +66,9 @@ module Minitest
|
|
66
66
|
|
67
67
|
reporter.prerecord(enqueued_runnable.runnable_class, enqueued_runnable.method_name)
|
68
68
|
|
69
|
-
|
70
|
-
|
69
|
+
initial_result = enqueued_runnable.run
|
70
|
+
enqueued_result = enqueued_runnable.commit_result(initial_result) do |result_to_commit|
|
71
|
+
if ResultType.of(result_to_commit) == ResultType::Requeued
|
71
72
|
queue << enqueued_runnable.next_attempt
|
72
73
|
end
|
73
74
|
EnqueuedRunnable::Result::Commit.success
|
@@ -440,15 +440,18 @@ module Minitest
|
|
440
440
|
|
441
441
|
local_results.size += batch.size
|
442
442
|
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
443
|
+
# Call `prerecord` on the recorder for all tests in the batch, and run them.
|
444
|
+
results = batch.map do |enqueued_runnable|
|
445
|
+
reporter.prerecord(enqueued_runnable.runnable_class, enqueued_runnable.method_name)
|
446
|
+
[enqueued_runnable, enqueued_runnable.run]
|
447
|
+
end
|
448
448
|
|
449
|
-
|
450
|
-
|
451
|
-
|
449
|
+
# Try to commit all the results of this batch to Redis
|
450
|
+
runnable_results = []
|
451
|
+
redis.multi do
|
452
|
+
results.each do |enqueued_runnable, initial_result|
|
453
|
+
runnable_results << enqueued_runnable.commit_result(initial_result) do |result_to_commit|
|
454
|
+
if ResultType.of(result_to_commit) == ResultType::Requeued
|
452
455
|
sadd_future = redis.sadd(key('retry_set'), enqueued_runnable.attempt_id)
|
453
456
|
EnqueuedRunnable::Result::Commit.new { sadd_future.value }
|
454
457
|
else
|
@@ -202,26 +202,31 @@ module Minitest
|
|
202
202
|
|
203
203
|
sig do
|
204
204
|
params(
|
205
|
+
initial_result: Minitest::Result,
|
205
206
|
block: T.proc.params(arg0: Minitest::Result).returns(EnqueuedRunnable::Result::Commit)
|
206
207
|
).returns(EnqueuedRunnable::Result)
|
207
208
|
end
|
208
|
-
def
|
209
|
-
|
209
|
+
def commit_result(initial_result, &block)
|
210
|
+
EnqueuedRunnable::Result.new(
|
211
|
+
enqueued_runnable: self,
|
212
|
+
initial_result: initial_result,
|
213
|
+
commit: block.call(initial_result),
|
214
|
+
)
|
215
|
+
end
|
216
|
+
|
217
|
+
sig { returns(Minitest::Result) }
|
218
|
+
def run
|
219
|
+
if attempts_exhausted?
|
210
220
|
attempts_exhausted_result
|
211
221
|
else
|
212
222
|
result = Minitest.run_one_method(runnable_class, method_name)
|
213
223
|
result_type = ResultType.of(result)
|
214
224
|
if (result_type == ResultType::Error || result_type == ResultType::Failed) && !final_attempt?
|
215
|
-
|
225
|
+
Minitest::Requeue.wrap(result, attempt: attempt, max_attempts: max_attempts)
|
226
|
+
else
|
227
|
+
result
|
216
228
|
end
|
217
|
-
result
|
218
229
|
end
|
219
|
-
|
220
|
-
EnqueuedRunnable::Result.new(
|
221
|
-
enqueued_runnable: self,
|
222
|
-
initial_result: initial_result,
|
223
|
-
commit: block.call(initial_result),
|
224
|
-
)
|
225
230
|
end
|
226
231
|
|
227
232
|
sig { returns(T.self_type) }
|
@@ -20,6 +20,7 @@ module Minitest
|
|
20
20
|
end
|
21
21
|
@coordinator = T.let(options[:distributed].coordinator, Coordinators::CoordinatorInterface)
|
22
22
|
@window_line_width = T.let(nil, T.nilable(Integer))
|
23
|
+
@show_progress = T.let(options[:distributed].progress, T::Boolean)
|
23
24
|
end
|
24
25
|
|
25
26
|
sig { override.void }
|
@@ -37,7 +38,7 @@ module Minitest
|
|
37
38
|
|
38
39
|
sig { override.params(klass: T.class_of(Runnable), name: String).void }
|
39
40
|
def prerecord(klass, name)
|
40
|
-
if
|
41
|
+
if show_progress?
|
41
42
|
clear_current_line
|
42
43
|
io.print("[#{results.acks}/#{results.size}] #{klass}##{name}".slice(0...window_line_width))
|
43
44
|
end
|
@@ -45,7 +46,7 @@ module Minitest
|
|
45
46
|
|
46
47
|
sig { override.params(result: Minitest::Result).void }
|
47
48
|
def record(result)
|
48
|
-
clear_current_line if
|
49
|
+
clear_current_line if show_progress?
|
49
50
|
|
50
51
|
case (result_type = ResultType.of(result))
|
51
52
|
when ResultType::Passed
|
@@ -61,11 +62,16 @@ module Minitest
|
|
61
62
|
|
62
63
|
sig { override.void }
|
63
64
|
def report
|
64
|
-
clear_current_line if
|
65
|
+
clear_current_line if show_progress?
|
65
66
|
end
|
66
67
|
|
67
68
|
private
|
68
69
|
|
70
|
+
sig { returns(T::Boolean) }
|
71
|
+
def show_progress?
|
72
|
+
@show_progress
|
73
|
+
end
|
74
|
+
|
69
75
|
sig { void }
|
70
76
|
def clear_current_line
|
71
77
|
io.print("\r" + (' ' * window_line_width) + "\r")
|
@@ -76,6 +82,8 @@ module Minitest
|
|
76
82
|
@window_line_width ||= begin
|
77
83
|
_height, width = io.winsize
|
78
84
|
width > 0 ? width : 80
|
85
|
+
rescue Errno::ENOTTY
|
86
|
+
80
|
79
87
|
end
|
80
88
|
end
|
81
89
|
|
@@ -12,7 +12,7 @@ module Minitest
|
|
12
12
|
options[:disable_distributed] = true
|
13
13
|
end
|
14
14
|
|
15
|
-
options[:distributed] = Minitest::Distributed::Configuration.from_command_line_options(opts)
|
15
|
+
options[:distributed] = Minitest::Distributed::Configuration.from_command_line_options(opts, options)
|
16
16
|
end
|
17
17
|
|
18
18
|
def plugin_distributed_init(options)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minitest-distributed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Willem van Bergen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|