turbo_tests2 3.2.6 → 3.2.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 845d3f1bfca237a4f69e92344534dac2dc046098ab5e37eee5b7f37546503b27
4
- data.tar.gz: 60a90bd453462fd4cfc42e0c6f7764e8a8caf6226275663de1d9f331342bbb5b
3
+ metadata.gz: ca871e5dbe65758df84b2abc6d7e7260cd3be66f463262083e51f3dd9b914b8f
4
+ data.tar.gz: 40920adda29dd8f5dc77dd1ca41dd2349b18838bc8a661ddddc6f277a8ec3b2e
5
5
  SHA512:
6
- metadata.gz: 5497b5766dfa59eded82f999068c3a2c0ffe63b5e43a4256586e3b16b1396637faea9b617cc10e0fb4dc6e1bf964e421b19efbe973bbd0d0fe793d2d03e32f43
7
- data.tar.gz: 157315d9cfdb740907c91f326419313bb8c94cac58580430e6c8c6c6f61318861bce2ad10c021661be4a23b35bee54dd244e1045c8068122095795aa440e271d
6
+ metadata.gz: 76c25c3e606364c6014377d57c74c270916dee892864d45113483c460ee919dae5da892245268d02e94e3c41d30fd35d787ff97434ec6ffdc109a8d604df73a2
7
+ data.tar.gz: bf173174ef544f7266cbc8488ba9b67cbb3f95c9aa438da45af1991e71f98f53851933bb55ad4840327ba35887058ca4786ca57a41f1a5034e1b21508878e4e8
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,57 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [3.2.8] - 2026-09-11
34
+
35
+ - TAG: [v3.2.8][3.2.8t]
36
+ - COVERAGE: 96.75% -- 892/922 lines in 10 files
37
+ - BRANCH COVERAGE: 84.98% -- 232/273 branches in 10 files
38
+ - 36.73% documented
39
+
40
+ ### Added
41
+
42
+ - Support TURBO_TESTS2_MAX_PROCESSES as an orchestration process ceiling.
43
+
44
+ ### Changed
45
+
46
+ - [kc] kettle-jem/prepare: updated 8 project files:
47
+ - dependencies (8)
48
+
49
+ - [kc] kettle-jem/template: updated 5 project files:
50
+ - code and tests (1)
51
+ - dependencies (3)
52
+ - other (1)
53
+
54
+ ## [3.2.7] - 2026-08-29
55
+
56
+ - TAG: [v3.2.7][3.2.7t]
57
+ - COVERAGE: 96.83% -- 885/914 lines in 10 files
58
+ - BRANCH COVERAGE: 85.50% -- 230/269 branches in 10 files
59
+ - 36.73% documented
60
+
61
+ ### Added
62
+
63
+ - Added `--no-rake-hooks` to run without loading a discoverable Rakefile or
64
+ invoking the `turbo_tests2:setup` and `turbo_tests2:cleanup` hooks.
65
+
66
+ ### Changed
67
+
68
+ - [kc] kettle-jem/prepare: updated 40 project files:
69
+ - configuration (1)
70
+ - dependencies (35)
71
+ - other (4)
72
+ - [kc] kettle-jem/template: updated 6 project files:
73
+ - code and tests (1)
74
+ - dependencies (2)
75
+ - other (2)
76
+ - workflows (1)
77
+
78
+ ### Fixed
79
+
80
+ - Running `turbo_tests2` no longer requires a Rakefile merely because the
81
+ `rake` gem is installed; Rake hooks are skipped when no Rakefile is
82
+ discoverable.
83
+
33
84
  ## [3.2.6] - 2026-08-13
34
85
 
35
86
  - TAG: [v3.2.6][3.2.6t]
@@ -535,7 +586,11 @@ Please file a bug if you notice a violation of semantic versioning.
535
586
 
536
587
  - Initial release
537
588
 
538
- [Unreleased]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.6...HEAD
589
+ [Unreleased]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.8...HEAD
590
+ [3.2.8]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.7...v3.2.8
591
+ [3.2.8t]: https://github.com/galtzo-floss/turbo_tests2/releases/tag/v3.2.8
592
+ [3.2.7]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.6...v3.2.7
593
+ [3.2.7t]: https://github.com/galtzo-floss/turbo_tests2/releases/tag/v3.2.7
539
594
  [3.2.6]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.5...v3.2.6
540
595
  [3.2.6t]: https://github.com/galtzo-floss/turbo_tests2/releases/tag/v3.2.6
541
596
  [3.2.5]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.4...v3.2.5
data/LICENSE.md CHANGED
@@ -7,15 +7,15 @@ Choose the option that best fits your use case:
7
7
 
8
8
  ## Copyright Notice
9
9
 
10
- - Copyright (c) 2020-2023 Illia
10
+ - Copyright (c) 2020-2024 Illia
11
11
  - Copyright (c) 2020 Ilya Zub
12
12
  - Copyright (c) 2021 AMHOL
13
13
  - Copyright (c) 2021 Serge Bedzhyk
14
14
  - Copyright (c) 2023 Bo Anderson
15
15
  - Copyright (c) 2023 Dmitiry Zub☀️
16
- - Copyright (c) 2023-2024 Illia
17
16
  - Copyright (c) 2023 mrudzki
18
17
  - Copyright (c) 2023-2024 Sebastien Savater
19
18
  - Copyright (c) 2024 Hiroshi SHIBATA
20
19
  - Copyright (c) 2025-2026 Gareth Jones
21
20
  - Copyright (c) 2025-2026 Peter H. Boling
21
+ - Copyright (c) 2026 Jeff Widman
data/README.md CHANGED
@@ -120,7 +120,9 @@ The _amazing_ test matrix is powered by the kettle-dev stack.
120
120
 
121
121
  </details>
122
122
 
123
- ### Enterprise Support [![Tidelift](https://tidelift.com/badges/package/rubygems/turbo_tests2)](https://tidelift.com/subscription/pkg/rubygems-turbo_tests2?utm_source=rubygems-turbo_tests2&utm_medium=referral&utm_campaign=readme)
123
+ ### Enterprise Support
124
+
125
+ [![Tidelift](https://tidelift.com/badges/package/rubygems/turbo_tests2)](https://tidelift.com/subscription/pkg/rubygems-turbo_tests2?utm_source=rubygems-turbo_tests2&utm_medium=referral&utm_campaign=readme)
124
126
 
125
127
  Available as part of the Tidelift Subscription.
126
128
 
@@ -218,6 +220,7 @@ Options:
218
220
  --no-random Run examples in defined order without passing a seed
219
221
  --create Create databases
220
222
  --print_failed_group Prints group that had failures in it
223
+ --no-rake-hooks Do not load a Rakefile or invoke setup and cleanup hooks
221
224
  --nice execute test commands with low priority
222
225
  ```
223
226
 
@@ -313,6 +316,12 @@ streams from the parent process as workers report examples. Use
313
316
  worker stdout/stderr is handled. A CLI flag takes precedence over the
314
317
  environment variable.
315
318
 
319
+ `TURBO_TESTS2_MAX_PROCESSES=N` supplies a positive inclusive process ceiling
320
+ when neither `--count` nor `--workers` is present. This is intended for an
321
+ outer orchestrator such as `kettle-family`; explicit CLI process counts always
322
+ take precedence. As with `--count`, the runner also caps the actual process
323
+ count at the number of discovered test groups.
324
+
316
325
  | Mode | Behavior |
317
326
  |------|----------|
318
327
  | `warnings` | Default. Buffer raw worker output, print warning/deprecation lines after successful runs, and print full buffered raw output on failures. |
@@ -331,8 +340,10 @@ bundle exec turbo_tests2 -r fuubar -f Fuubar spec/whatever
331
340
 
332
341
  ### Rake Hooks
333
342
 
334
- If Rake is present, the CLI will invoke the tasks `turbo_tests2:setup` and `turbo_tests2:cleanup` before and after running
335
- the test suite. These can be used to do work that should only happen once, such as removing files or collating coverage:
343
+ If Rake and a Rakefile are present, the CLI will invoke the tasks `turbo_tests2:setup` and
344
+ `turbo_tests2:cleanup` before and after running the test suite. If no Rakefile is discoverable,
345
+ the test suite runs without hooks. These tasks can be used to do work that should only happen
346
+ once, such as removing files or collating coverage:
336
347
 
337
348
  ```ruby
338
349
  # lib/tasks/turbo_tests2.rake
@@ -349,6 +360,14 @@ namespace :turbo_tests2 do
349
360
  end
350
361
  ```
351
362
 
363
+ Projects with a discoverable Rakefile can disable this integration explicitly:
364
+
365
+ ```bash
366
+ bundle exec turbo_tests2 --no-rake-hooks
367
+ ```
368
+
369
+ This prevents the Rakefile from being loaded and skips both hooks.
370
+
352
371
  ### SimpleCov
353
372
 
354
373
  You can get accurate coverage reporting by having SimpleCov write the results for each process into a different directory
@@ -528,18 +547,18 @@ See [LICENSE.md][📄license] for the official copyright notice.
528
547
  <details markdown="1">
529
548
  <summary>Copyright holders</summary>
530
549
 
531
- - Copyright (c) 2020-2023 Illia
550
+ - Copyright (c) 2020-2024 Illia
532
551
  - Copyright (c) 2020 Ilya Zub
533
552
  - Copyright (c) 2021 AMHOL
534
553
  - Copyright (c) 2021 Serge Bedzhyk
535
554
  - Copyright (c) 2023 Bo Anderson
536
555
  - Copyright (c) 2023 Dmitiry Zub☀️
537
- - Copyright (c) 2023-2024 Illia
538
556
  - Copyright (c) 2023 mrudzki
539
557
  - Copyright (c) 2023-2024 Sebastien Savater
540
558
  - Copyright (c) 2024 Hiroshi SHIBATA
541
559
  - Copyright (c) 2025-2026 Gareth Jones
542
560
  - Copyright (c) 2025-2026 Peter H. Boling
561
+ - Copyright (c) 2026 Jeff Widman
543
562
 
544
563
  </details>
545
564
 
@@ -756,7 +775,7 @@ Thanks for RTFM. ☺️
756
775
  [📌gitmoji]: https://gitmoji.dev
757
776
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
758
777
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
759
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.909-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
778
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.922-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
760
779
  [🔐security]: https://github.com/galtzo-floss/turbo_tests2/blob/main/SECURITY.md
761
780
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
762
781
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -25,6 +25,7 @@ module TurboTests
25
25
  print_failed_group = false
26
26
  create = false
27
27
  nice = false
28
+ rake_hooks = true
28
29
  worker_output = nil
29
30
  parallel_options = {}
30
31
  cli_args, parallel_args = split_parallel_args(@argv)
@@ -159,6 +160,10 @@ module TurboTests
159
160
  print_failed_group = true
160
161
  end
161
162
 
163
+ opts.on("--no-rake-hooks", "Do not load a Rakefile or invoke setup and cleanup hooks") do
164
+ rake_hooks = false
165
+ end
166
+
162
167
  opts.on("--nice", "execute test commands with low priority") do
163
168
  nice = true
164
169
  end
@@ -170,6 +175,11 @@ module TurboTests
170
175
  return TurboTests::Runner.create(count)
171
176
  end
172
177
 
178
+ # Family orchestration supplies an inclusive ceiling for the complete
179
+ # test process pool. A command-line count remains the explicit operator
180
+ # choice, so it always wins over the inherited budget.
181
+ count ||= max_processes_from_environment
182
+
173
183
  requires.each { |f| require(f) }
174
184
 
175
185
  if formatters.empty?
@@ -183,9 +193,10 @@ module TurboTests
183
193
  formatter[:outputs] << "-" if formatter[:outputs].empty?
184
194
  end
185
195
 
186
- load_rake
187
-
188
- invoke_rake_hook("setup")
196
+ if rake_hooks
197
+ load_rake
198
+ invoke_rake_hook("setup")
199
+ end
189
200
 
190
201
  files = cli_args.empty? ? nil : cli_args
191
202
 
@@ -206,7 +217,7 @@ module TurboTests
206
217
  parallel_options: parallel_options
207
218
  )
208
219
 
209
- invoke_rake_hook("cleanup")
220
+ invoke_rake_hook("cleanup") if rake_hooks
210
221
 
211
222
  # From https://github.com/galtzo-floss/turbo_tests2/pull/20/
212
223
  exit(exitstatus)
@@ -232,6 +243,18 @@ module TurboTests
232
243
  ]
233
244
  end
234
245
 
246
+ def max_processes_from_environment
247
+ value = ENV.fetch("TURBO_TESTS2_MAX_PROCESSES", "").strip
248
+ return if value.empty?
249
+
250
+ count = Integer(value, 10)
251
+ return count if count.positive?
252
+
253
+ raise OptionParser::InvalidArgument, "invalid TURBO_TESTS2_MAX_PROCESSES #{value.inspect}; expected a positive integer"
254
+ rescue ArgumentError
255
+ raise OptionParser::InvalidArgument, "invalid TURBO_TESTS2_MAX_PROCESSES #{value.inspect}; expected a positive integer"
256
+ end
257
+
235
258
  def parse_parallel_args(args, parallel_options)
236
259
  OptionParser.new do |opts|
237
260
  opts.on("--pattern PATTERN", "Run spec files matching this regex pattern") do |pattern|
@@ -412,6 +435,8 @@ module TurboTests
412
435
  # which may contain non-Rake arguments (e.g. RSpec's --pattern flag when
413
436
  # tests are run via `rake spec`).
414
437
  Rake.application.init("rake", [])
438
+ return unless Rake.application.find_rakefile_location
439
+
415
440
  Rake.application.load_rakefile
416
441
  end
417
442
 
@@ -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.6"
7
+ VERSION = "3.2.8"
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.6
4
+ version: 3.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Illia
@@ -15,6 +15,7 @@ authors:
15
15
  - Hiroshi SHIBATA
16
16
  - Gareth Jones
17
17
  - Peter H. Boling
18
+ - Jeff Widman
18
19
  bindir: exe
19
20
  cert_chain:
20
21
  - |
@@ -107,20 +108,20 @@ dependencies:
107
108
  requirements:
108
109
  - - "~>"
109
110
  - !ruby/object:Gem::Version
110
- version: '3.0'
111
+ version: '3.1'
111
112
  - - ">="
112
113
  - !ruby/object:Gem::Version
113
- version: 3.0.6
114
+ version: 3.1.0
114
115
  type: :development
115
116
  prerelease: false
116
117
  version_requirements: !ruby/object:Gem::Requirement
117
118
  requirements:
118
119
  - - "~>"
119
120
  - !ruby/object:Gem::Version
120
- version: '3.0'
121
+ version: '3.1'
121
122
  - - ">="
122
123
  - !ruby/object:Gem::Version
123
- version: 3.0.6
124
+ version: 3.1.0
124
125
  - !ruby/object:Gem::Dependency
125
126
  name: bundler-audit
126
127
  requirement: !ruby/object:Gem::Requirement
@@ -198,7 +199,7 @@ dependencies:
198
199
  version: '3.2'
199
200
  - - ">="
200
201
  - !ruby/object:Gem::Version
201
- version: 3.2.2
202
+ version: 3.2.3
202
203
  type: :development
203
204
  prerelease: false
204
205
  version_requirements: !ruby/object:Gem::Requirement
@@ -208,7 +209,7 @@ dependencies:
208
209
  version: '3.2'
209
210
  - - ">="
210
211
  - !ruby/object:Gem::Version
211
- version: 3.2.2
212
+ version: 3.2.3
212
213
  - !ruby/object:Gem::Dependency
213
214
  name: kettle-test
214
215
  requirement: !ruby/object:Gem::Requirement
@@ -218,7 +219,7 @@ dependencies:
218
219
  version: '2.0'
219
220
  - - ">="
220
221
  - !ruby/object:Gem::Version
221
- version: 2.0.19
222
+ version: 2.0.21
222
223
  type: :development
223
224
  prerelease: false
224
225
  version_requirements: !ruby/object:Gem::Requirement
@@ -228,7 +229,7 @@ dependencies:
228
229
  version: '2.0'
229
230
  - - ">="
230
231
  - !ruby/object:Gem::Version
231
- version: 2.0.19
232
+ version: 2.0.21
232
233
  - !ruby/object:Gem::Dependency
233
234
  name: ruby-progressbar
234
235
  requirement: !ruby/object:Gem::Requirement
@@ -252,7 +253,7 @@ dependencies:
252
253
  version: '1.0'
253
254
  - - ">="
254
255
  - !ruby/object:Gem::Version
255
- version: 1.0.8
256
+ version: 1.0.9
256
257
  type: :development
257
258
  prerelease: false
258
259
  version_requirements: !ruby/object:Gem::Requirement
@@ -262,7 +263,7 @@ dependencies:
262
263
  version: '1.0'
263
264
  - - ">="
264
265
  - !ruby/object:Gem::Version
265
- version: 1.0.8
266
+ version: 1.0.9
266
267
  - !ruby/object:Gem::Dependency
267
268
  name: gitmoji-regex
268
269
  requirement: !ruby/object:Gem::Requirement
@@ -272,7 +273,7 @@ dependencies:
272
273
  version: '2.0'
273
274
  - - ">="
274
275
  - !ruby/object:Gem::Version
275
- version: 2.0.12
276
+ version: 2.0.13
276
277
  type: :development
277
278
  prerelease: false
278
279
  version_requirements: !ruby/object:Gem::Requirement
@@ -282,7 +283,7 @@ dependencies:
282
283
  version: '2.0'
283
284
  - - ">="
284
285
  - !ruby/object:Gem::Version
285
- version: 2.0.12
286
+ version: 2.0.13
286
287
  description: "\U0001F680 turbo_tests2` is an RSpec parallel test runner built on `parallel_tests`.
287
288
  It uses `parallel_tests` for process counts, file grouping, and runtime balancing,
288
289
  then replaces interleaved worker output with incremental summarized RSpec reporting.
@@ -314,10 +315,10 @@ licenses:
314
315
  - MIT
315
316
  metadata:
316
317
  homepage_uri: https://turbo-tests2.galtzo.com
317
- source_code_uri: https://github.com/galtzo-floss/turbo_tests2/tree/v3.2.6
318
- changelog_uri: https://github.com/galtzo-floss/turbo_tests2/blob/v3.2.6/CHANGELOG.md
318
+ source_code_uri: https://github.com/galtzo-floss/turbo_tests2/tree/v3.2.8
319
+ changelog_uri: https://github.com/galtzo-floss/turbo_tests2/blob/v3.2.8/CHANGELOG.md
319
320
  bug_tracker_uri: https://github.com/galtzo-floss/turbo_tests2/issues
320
- documentation_uri: https://www.rubydoc.info/gems/turbo_tests2/3.2.6
321
+ documentation_uri: https://www.rubydoc.info/gems/turbo_tests2/3.2.8
321
322
  funding_uri: https://github.com/sponsors/pboling
322
323
  wiki_uri: https://github.com/galtzo-floss/turbo_tests2/wiki
323
324
  news_uri: https://www.railsbling.com/tags/turbo_tests2
metadata.gz.sig CHANGED
Binary file