ci-queue 0.93.0 → 0.95.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 +4 -4
- data/Gemfile.lock +5 -2
- data/ci-queue.gemspec +2 -1
- data/lib/ci/queue/version.rb +1 -1
- data/lib/minitest/queue/runner.rb +8 -2
- data/lib/minitest/queue.rb +33 -12
- metadata +17 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fbfe5c0fc78304868386bb6349559364566bb77e1b66353d8382054a1070fcb6
|
|
4
|
+
data.tar.gz: 8e61c69ecf3ef5bd62f1a099f9206eb339cb95a47988d283c0ef6158bf20c401
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c030de4de40d4d9ee06d88807cc33dc680714af6cf06b3c261f426ab39909826d13165fc0b5cf298f74e8f97cb683dfc2d05ba50951d358717a9cb24344233e3
|
|
7
|
+
data.tar.gz: 3f40abe7cd593a0f4b3bbf34abb11a2031515aea06908952f1de090e8d2657d670265e75e817c2e2b7ef5a707c74e6d0e96a625cdf61f4e8fc76a5baf2f868bf
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
ci-queue (0.
|
|
4
|
+
ci-queue (0.95.0)
|
|
5
5
|
logger
|
|
6
6
|
|
|
7
7
|
GEM
|
|
@@ -38,6 +38,7 @@ GEM
|
|
|
38
38
|
lint_roller (1.1.0)
|
|
39
39
|
logger (1.7.0)
|
|
40
40
|
minitest (5.27.0)
|
|
41
|
+
minitest-mock (5.27.0)
|
|
41
42
|
minitest-reporters (1.7.1)
|
|
42
43
|
ansi
|
|
43
44
|
builder
|
|
@@ -106,6 +107,7 @@ GEM
|
|
|
106
107
|
|
|
107
108
|
PLATFORMS
|
|
108
109
|
arm64-darwin-23
|
|
110
|
+
arm64-darwin-24
|
|
109
111
|
ruby
|
|
110
112
|
|
|
111
113
|
DEPENDENCIES
|
|
@@ -113,7 +115,8 @@ DEPENDENCIES
|
|
|
113
115
|
benchmark
|
|
114
116
|
bundler
|
|
115
117
|
ci-queue!
|
|
116
|
-
minitest (
|
|
118
|
+
minitest (>= 5.11)
|
|
119
|
+
minitest-mock
|
|
117
120
|
minitest-reporters (~> 1.1)
|
|
118
121
|
mocha
|
|
119
122
|
msgpack
|
data/ci-queue.gemspec
CHANGED
|
@@ -35,11 +35,12 @@ Gem::Specification.new do |spec|
|
|
|
35
35
|
|
|
36
36
|
spec.add_development_dependency 'bundler'
|
|
37
37
|
spec.add_development_dependency 'rake'
|
|
38
|
-
spec.add_development_dependency 'minitest', ENV.fetch('MINITEST_VERSION', '
|
|
38
|
+
spec.add_development_dependency 'minitest', ENV.fetch('MINITEST_VERSION', '>= 5.11')
|
|
39
39
|
spec.add_development_dependency 'rspec', '~> 3.10'
|
|
40
40
|
spec.add_development_dependency 'redis'
|
|
41
41
|
spec.add_development_dependency 'simplecov', '~> 0.12'
|
|
42
42
|
spec.add_development_dependency 'minitest-reporters', '~> 1.1'
|
|
43
|
+
spec.add_development_dependency 'minitest-mock'
|
|
43
44
|
spec.add_development_dependency 'mocha'
|
|
44
45
|
|
|
45
46
|
spec.add_development_dependency 'rexml'
|
data/lib/ci/queue/version.rb
CHANGED
|
@@ -254,7 +254,9 @@ module Minitest
|
|
|
254
254
|
step(yellow("The failing test was the first test in the test order so there is nothing to bisect."))
|
|
255
255
|
File.write('log/test_order.log', "")
|
|
256
256
|
File.write('log/bisect_test_details.log', "")
|
|
257
|
-
|
|
257
|
+
# Bisect ran successfully; there is simply nothing to bisect against.
|
|
258
|
+
# Reserve non-zero exits for cases where the bisect could not run (see failing_test_present? above).
|
|
259
|
+
exit! 0
|
|
258
260
|
end
|
|
259
261
|
|
|
260
262
|
failing_order = queue.candidates
|
|
@@ -263,7 +265,10 @@ module Minitest
|
|
|
263
265
|
step(yellow("The bisection was inconclusive, there might not be any leaky test here."))
|
|
264
266
|
File.write('log/test_order.log', "")
|
|
265
267
|
File.write('log/bisect_test_details.log', "")
|
|
266
|
-
|
|
268
|
+
# Bisect ran successfully; the failure did not reproduce on the narrowed-down order.
|
|
269
|
+
# This is the expected outcome for genuinely flaky tests (timing/async) rather than order-dependent ones.
|
|
270
|
+
# Reserve non-zero exits for cases where the bisect could not run.
|
|
271
|
+
exit! 0
|
|
267
272
|
else
|
|
268
273
|
step(green('The following command should reproduce the leak on your machine:'), collapsed: false)
|
|
269
274
|
command = %w(bundle exec minitest-queue --queue - run)
|
|
@@ -393,6 +398,7 @@ module Minitest
|
|
|
393
398
|
child_pid = fork do
|
|
394
399
|
Minitest.queue = queue
|
|
395
400
|
Minitest::Reporters.use!([Minitest::Reporters::BisectReporter.new])
|
|
401
|
+
Minitest.load_plugins if Minitest.respond_to?(:load_plugins)
|
|
396
402
|
exit # let minitest excute its at_exit
|
|
397
403
|
end
|
|
398
404
|
|
data/lib/minitest/queue.rb
CHANGED
|
@@ -359,7 +359,7 @@ module Minitest
|
|
|
359
359
|
|
|
360
360
|
def run
|
|
361
361
|
with_timestamps do
|
|
362
|
-
|
|
362
|
+
@runnable.new(@method_name).run
|
|
363
363
|
end
|
|
364
364
|
end
|
|
365
365
|
|
|
@@ -450,7 +450,7 @@ module Minitest
|
|
|
450
450
|
elsif skip_stale_tests? && !(runnable.method_defined?(@method_name) || runnable.private_method_defined?(@method_name))
|
|
451
451
|
build_stale_skip_result
|
|
452
452
|
else
|
|
453
|
-
|
|
453
|
+
runnable.new(@method_name).run
|
|
454
454
|
end
|
|
455
455
|
rescue StandardError, ScriptError => error
|
|
456
456
|
build_error_result(error)
|
|
@@ -552,6 +552,12 @@ module Minitest
|
|
|
552
552
|
Reporters.use!(((Reporters.reporters || []) - @queue_reporters) + reporters)
|
|
553
553
|
Minitest.backtrace_filter.add_filter(%r{exe/minitest-queue|lib/ci/queue/})
|
|
554
554
|
@queue_reporters = reporters
|
|
555
|
+
|
|
556
|
+
# minitest 6 made plugin loading opt-in (no longer called from
|
|
557
|
+
# Minitest.run). Ensure minitest-reporters' plugin is loaded so
|
|
558
|
+
# that its DelegateReporter wires our reporters into the
|
|
559
|
+
# CompositeReporter that Minitest.run creates.
|
|
560
|
+
Minitest.load_plugins if Minitest.respond_to?(:load_plugins)
|
|
555
561
|
end
|
|
556
562
|
|
|
557
563
|
def loaded_tests
|
|
@@ -562,19 +568,34 @@ module Minitest
|
|
|
562
568
|
end
|
|
563
569
|
end
|
|
564
570
|
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
571
|
+
# minitest 5 calls __run; minitest 6 renamed it to run_all_suites.
|
|
572
|
+
# Define both so the prepend intercepts whichever version is active.
|
|
573
|
+
%i[__run run_all_suites].each do |name|
|
|
574
|
+
define_method(name) do |*args|
|
|
575
|
+
if queue
|
|
576
|
+
Queue.run(*args)
|
|
568
577
|
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
578
|
+
if queue.config.circuit_breakers.any?(&:open?)
|
|
579
|
+
STDERR.puts queue.config.circuit_breakers.map(&:message).join(' ').strip
|
|
580
|
+
end
|
|
581
|
+
|
|
582
|
+
if queue.max_test_failed?
|
|
583
|
+
STDERR.puts 'This worker is exiting early because too many failed tests were encountered.'
|
|
584
|
+
end
|
|
572
585
|
|
|
573
|
-
|
|
574
|
-
|
|
586
|
+
# minitest 6 starts a Parallel::Executor thread pool before
|
|
587
|
+
# calling run_all_suites, then joins those threads in shutdown
|
|
588
|
+
# afterward. ci-queue bypasses the executor entirely (it has
|
|
589
|
+
# its own Redis poll loop), so the worker threads sit idle and
|
|
590
|
+
# shutdown hangs forever. Drain them here so the later
|
|
591
|
+
# shutdown in Minitest.run is a no-op.
|
|
592
|
+
if Minitest.respond_to?(:parallel_executor)
|
|
593
|
+
executor = Minitest.parallel_executor
|
|
594
|
+
executor.shutdown if executor.respond_to?(:shutdown)
|
|
595
|
+
end
|
|
596
|
+
else
|
|
597
|
+
super(*args)
|
|
575
598
|
end
|
|
576
|
-
else
|
|
577
|
-
super
|
|
578
599
|
end
|
|
579
600
|
end
|
|
580
601
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ci-queue
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.95.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jean Boussier
|
|
@@ -55,14 +55,14 @@ dependencies:
|
|
|
55
55
|
name: minitest
|
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
|
57
57
|
requirements:
|
|
58
|
-
- - "
|
|
58
|
+
- - ">="
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
60
|
version: '5.11'
|
|
61
61
|
type: :development
|
|
62
62
|
prerelease: false
|
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
64
64
|
requirements:
|
|
65
|
-
- - "
|
|
65
|
+
- - ">="
|
|
66
66
|
- !ruby/object:Gem::Version
|
|
67
67
|
version: '5.11'
|
|
68
68
|
- !ruby/object:Gem::Dependency
|
|
@@ -121,6 +121,20 @@ dependencies:
|
|
|
121
121
|
- - "~>"
|
|
122
122
|
- !ruby/object:Gem::Version
|
|
123
123
|
version: '1.1'
|
|
124
|
+
- !ruby/object:Gem::Dependency
|
|
125
|
+
name: minitest-mock
|
|
126
|
+
requirement: !ruby/object:Gem::Requirement
|
|
127
|
+
requirements:
|
|
128
|
+
- - ">="
|
|
129
|
+
- !ruby/object:Gem::Version
|
|
130
|
+
version: '0'
|
|
131
|
+
type: :development
|
|
132
|
+
prerelease: false
|
|
133
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
134
|
+
requirements:
|
|
135
|
+
- - ">="
|
|
136
|
+
- !ruby/object:Gem::Version
|
|
137
|
+
version: '0'
|
|
124
138
|
- !ruby/object:Gem::Dependency
|
|
125
139
|
name: mocha
|
|
126
140
|
requirement: !ruby/object:Gem::Requirement
|