turbo_tests2 3.2.15 → 3.2.16
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
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +22 -1
- data/README.md +1 -1
- data/lib/turbo_tests/runner.rb +52 -14
- data/lib/turbo_tests/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +8 -8
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0ba760f9553f5ac9180f943b7b6ba4292f8e3ae332c2ee8f93d704fb6df39fd8
|
|
4
|
+
data.tar.gz: 308a01984a1da21ef5a1005cd5f333404b8132b6b8b12717f9fcf1e6b213421d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d15f6b3dc4601510f2fc2785b722b966fe543352a2408f084160e9b0d064fcf020cb234dbcc22b7c03baca495d1a7c87a13d41e24e74084a4bc43b6fe4aec5ac
|
|
7
|
+
data.tar.gz: be13e868955aacabb64993bab93050538def66c7c341406b082878d9f06d8c3098c701052f40c1e1a7c36eed026de5bc1c6930c7db42ab2e109a8240944c5d48
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,25 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [3.2.16] - 2026-10-14
|
|
34
|
+
|
|
35
|
+
- TAG: [v3.2.16][3.2.16t]
|
|
36
|
+
- COVERAGE: 95.94% -- 993/1035 lines in 11 files
|
|
37
|
+
- BRANCH COVERAGE: 83.86% -- 265/316 branches in 11 files
|
|
38
|
+
- 39.42% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Watchdog kills now actually end the run: kill_remaining_workers takes pids from the live wait_threads (the parallel_tests pid file was unreliable — each track/untrack built a fresh Pids instance, so any normal worker exit wiped the file and the watchdog killed nothing), handle_messages stops at the watchdog sentinel instead of waiting for per-worker exits that can never arrive, and post-kill joins are bounded so a wedged worker can no longer hold the run past the watchdog (observed: CI job printed the stall report, then hung 14 more minutes until cancellation)
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- [kc] kettle-jem/template: updated 32 project files:
|
|
47
|
+
- code and tests (1)
|
|
48
|
+
- dependencies (3)
|
|
49
|
+
- other (1)
|
|
50
|
+
- workflows (27)
|
|
51
|
+
|
|
33
52
|
## [3.2.15] - 2026-10-13
|
|
34
53
|
|
|
35
54
|
- TAG: [v3.2.15][3.2.15t]
|
|
@@ -742,7 +761,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
742
761
|
|
|
743
762
|
- Initial release
|
|
744
763
|
|
|
745
|
-
[Unreleased]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.
|
|
764
|
+
[Unreleased]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.16...HEAD
|
|
765
|
+
[3.2.16]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.15...v3.2.16
|
|
766
|
+
[3.2.16t]: https://github.com/galtzo-floss/turbo_tests2/releases/tag/v3.2.16
|
|
746
767
|
[3.2.15]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.14...v3.2.15
|
|
747
768
|
[3.2.15t]: https://github.com/galtzo-floss/turbo_tests2/releases/tag/v3.2.15
|
|
748
769
|
[3.2.14]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.13...v3.2.14
|
data/README.md
CHANGED
|
@@ -859,7 +859,7 @@ Thanks for RTFM. ☺️
|
|
|
859
859
|
[📌gitmoji]: https://gitmoji.dev
|
|
860
860
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
861
861
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
862
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-1.
|
|
862
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-1.035-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
863
863
|
[🔐security]: https://github.com/galtzo-floss/turbo_tests2/blob/main/SECURITY.md
|
|
864
864
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
865
865
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
data/lib/turbo_tests/runner.rb
CHANGED
|
@@ -318,24 +318,41 @@ module TurboTests
|
|
|
318
318
|
|
|
319
319
|
handle_messages
|
|
320
320
|
|
|
321
|
-
@
|
|
321
|
+
if @watchdog_fired
|
|
322
|
+
# Workers were SIGKILLed by the watchdog; their reader threads end
|
|
323
|
+
# at EOF and waiters return as the OS reaps them — but if a kill
|
|
324
|
+
# failed (permissions, zombie, pid reuse) an unbounded join here
|
|
325
|
+
# would hang the run anyway, defeating the watchdog. Bound every
|
|
326
|
+
# join and treat any worker that still has not exited as failed.
|
|
327
|
+
@threads.each do |thread|
|
|
328
|
+
thread.join(FORCE_STOP_JOIN)
|
|
329
|
+
thread.kill if thread.alive?
|
|
330
|
+
end
|
|
331
|
+
@wait_threads.each do |wait_thr|
|
|
332
|
+
wait_thr.join(FORCE_STOP_JOIN)
|
|
333
|
+
end
|
|
334
|
+
flush_worker_output unless stream_worker_output?
|
|
335
|
+
exit_status = 1
|
|
336
|
+
else
|
|
337
|
+
@threads.each(&:join)
|
|
322
338
|
|
|
323
|
-
|
|
339
|
+
report_workers_without_results
|
|
324
340
|
|
|
325
|
-
|
|
341
|
+
report_failed_group(tests_in_groups) if @print_failed_group
|
|
326
342
|
|
|
327
|
-
|
|
343
|
+
Signal.trap(:INT, old_signal)
|
|
328
344
|
|
|
329
|
-
|
|
345
|
+
statuses = @wait_threads.map(&:value)
|
|
330
346
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
347
|
+
if @reporter.failed_examples.empty? && statuses.all?(&:success?)
|
|
348
|
+
flush_successful_worker_output
|
|
349
|
+
report_coverage = true
|
|
350
|
+
exit_status = 0
|
|
351
|
+
else
|
|
352
|
+
flush_worker_output unless stream_worker_output?
|
|
353
|
+
# From https://github.com/galtzo-floss/turbo_tests2/pull/20/
|
|
354
|
+
exit_status = statuses.map(&:exitstatus).max
|
|
355
|
+
end
|
|
339
356
|
end
|
|
340
357
|
end
|
|
341
358
|
|
|
@@ -759,6 +776,11 @@ module TurboTests
|
|
|
759
776
|
"turbo_tests2: watchdog fired after #{@watchdog_seconds}s without worker messages; workers killed\n#{stall_report}"
|
|
760
777
|
)
|
|
761
778
|
@error = true
|
|
779
|
+
# The run is over: workers were just SIGKILLed. handle_messages must
|
|
780
|
+
# not keep waiting for per-worker exit messages that can never
|
|
781
|
+
# arrive, and the caller must not re-enter this watchdog (which would
|
|
782
|
+
# warn-and-kill in a 1-second spin).
|
|
783
|
+
@watchdog_fired = true
|
|
762
784
|
return {type: "exit", process_id: :watchdog}
|
|
763
785
|
end
|
|
764
786
|
end
|
|
@@ -792,7 +814,19 @@ module TurboTests
|
|
|
792
814
|
end
|
|
793
815
|
|
|
794
816
|
def kill_remaining_workers
|
|
795
|
-
|
|
817
|
+
# The live waiter objects are authoritative: the parallel_tests pid file
|
|
818
|
+
# loses entries because every track/untrack call builds a fresh Pids
|
|
819
|
+
# instance whose in-memory list starts empty, so a save overwrites (or,
|
|
820
|
+
# for untrack, empties) the file. After any normal worker exit the file
|
|
821
|
+
# is guaranteed useless — exactly when the watchdog needs it most.
|
|
822
|
+
pids = (@wait_threads || []).map do |wait_thr|
|
|
823
|
+
begin
|
|
824
|
+
wait_thr.pid
|
|
825
|
+
rescue
|
|
826
|
+
nil
|
|
827
|
+
end
|
|
828
|
+
end.compact
|
|
829
|
+
(pids | tracked_pids).each do |pid|
|
|
796
830
|
begin
|
|
797
831
|
Process.kill("KILL", pid)
|
|
798
832
|
rescue
|
|
@@ -870,6 +904,10 @@ module TurboTests
|
|
|
870
904
|
nil
|
|
871
905
|
when "exit"
|
|
872
906
|
process_id = message[:process_id]
|
|
907
|
+
# Watchdog exit: workers were just SIGKILLed and no further per-worker
|
|
908
|
+
# exit messages can be relied upon — stop the loop immediately
|
|
909
|
+
# instead of waiting for process_count exits that never arrive.
|
|
910
|
+
break if process_id == :watchdog
|
|
873
911
|
next if exited_process_ids.key?(process_id)
|
|
874
912
|
|
|
875
913
|
exited_process_ids[process_id] = true
|
data/lib/turbo_tests/version.rb
CHANGED
|
@@ -4,7 +4,7 @@ module TurboTests
|
|
|
4
4
|
# Version namespace for this gem.
|
|
5
5
|
module Version
|
|
6
6
|
# Current gem version.
|
|
7
|
-
VERSION = "3.2.
|
|
7
|
+
VERSION = "3.2.16"
|
|
8
8
|
end
|
|
9
9
|
# Current gem version exposed at the traditional constant location.
|
|
10
10
|
VERSION = Version::VERSION # Traditional Constant Location
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: turbo_tests2
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.2.
|
|
4
|
+
version: 3.2.16
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Illia
|
|
@@ -111,7 +111,7 @@ dependencies:
|
|
|
111
111
|
version: '3.1'
|
|
112
112
|
- - ">="
|
|
113
113
|
- !ruby/object:Gem::Version
|
|
114
|
-
version: 3.1.
|
|
114
|
+
version: 3.1.12
|
|
115
115
|
type: :development
|
|
116
116
|
prerelease: false
|
|
117
117
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -121,7 +121,7 @@ dependencies:
|
|
|
121
121
|
version: '3.1'
|
|
122
122
|
- - ">="
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: 3.1.
|
|
124
|
+
version: 3.1.12
|
|
125
125
|
- !ruby/object:Gem::Dependency
|
|
126
126
|
name: bundler-audit
|
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -219,7 +219,7 @@ dependencies:
|
|
|
219
219
|
version: '2.0'
|
|
220
220
|
- - ">="
|
|
221
221
|
- !ruby/object:Gem::Version
|
|
222
|
-
version: 2.0.
|
|
222
|
+
version: 2.0.25
|
|
223
223
|
type: :development
|
|
224
224
|
prerelease: false
|
|
225
225
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -229,7 +229,7 @@ dependencies:
|
|
|
229
229
|
version: '2.0'
|
|
230
230
|
- - ">="
|
|
231
231
|
- !ruby/object:Gem::Version
|
|
232
|
-
version: 2.0.
|
|
232
|
+
version: 2.0.25
|
|
233
233
|
- !ruby/object:Gem::Dependency
|
|
234
234
|
name: ruby-progressbar
|
|
235
235
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -316,10 +316,10 @@ licenses:
|
|
|
316
316
|
- MIT
|
|
317
317
|
metadata:
|
|
318
318
|
homepage_uri: https://turbo-tests2.galtzo.com
|
|
319
|
-
source_code_uri: https://github.com/galtzo-floss/turbo_tests2/tree/v3.2.
|
|
320
|
-
changelog_uri: https://github.com/galtzo-floss/turbo_tests2/blob/v3.2.
|
|
319
|
+
source_code_uri: https://github.com/galtzo-floss/turbo_tests2/tree/v3.2.16
|
|
320
|
+
changelog_uri: https://github.com/galtzo-floss/turbo_tests2/blob/v3.2.16/CHANGELOG.md
|
|
321
321
|
bug_tracker_uri: https://github.com/galtzo-floss/turbo_tests2/issues
|
|
322
|
-
documentation_uri: https://www.rubydoc.info/gems/turbo_tests2/3.2.
|
|
322
|
+
documentation_uri: https://www.rubydoc.info/gems/turbo_tests2/3.2.16
|
|
323
323
|
funding_uri: https://github.com/sponsors/pboling
|
|
324
324
|
wiki_uri: https://github.com/galtzo-floss/turbo_tests2/wiki
|
|
325
325
|
news_uri: https://www.railsbling.com/tags/turbo_tests2
|
metadata.gz.sig
CHANGED
|
Binary file
|