turbo_tests2 3.2.1 โ†’ 3.2.3

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: b472277b993feef40505fbd17ec4b7602310b703c965a1a632aa3c21489812c7
4
- data.tar.gz: f792e2de4afb78108715d74c488aeb8123ac81c67364a27a1859a194190a100a
3
+ metadata.gz: 2af1fec1f172642796e8d50a8debcf093fe47adc8631fc38d87f21594208695c
4
+ data.tar.gz: 9c37a6eb91300dd299ccfb54aefe2363ddb53fa679b6114371b8dd84a2bdbbc8
5
5
  SHA512:
6
- metadata.gz: 70d7b9f1cc88b356531dfb38281b58f96a0c3f6f6e4c4cfcfff57fafb03fda83a5380d880259f4ae34e040c3292d98c2d0593b779a8157ccd2df34c23e2bfc39
7
- data.tar.gz: 6a128634eacabc86bab67908576250ec996b52718417073ef1efad6f5765c9855f4d8c71f1d36282551cd0104721b5fe88ce645c2aae3953a282da462f62bb31
6
+ metadata.gz: 91c905b362cec739c3e5294abba63cb23226131c2b1763ae57df9197961c5d8d802800931b012a164b194b5a46bd30fa0fece33c2003b1751319bc93dd345472
7
+ data.tar.gz: a781315b43d20f6e482094ce4672fcf29dba858625a6006e63d146e3e4831d168831ad74f2ba3ea93a668e295490bb8e27baaadb0793c5747cb4c1a0a2f97918
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,58 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [3.2.3] - 2026-07-26
34
+
35
+ - TAG: [v3.2.3][3.2.3t]
36
+ - COVERAGE: 96.81% -- 880/909 lines in 10 files
37
+ - BRANCH COVERAGE: 85.17% -- 224/263 branches in 10 files
38
+ - 36.73% documented
39
+
40
+ ### Added
41
+
42
+ - Documentation linting now has its generated `yard-lint` dependency and severity config available in the local bundle.
43
+
44
+ - kettle-jem-template-20260726-001 - Projects now include YARD lint
45
+ configuration and documentation dependencies so documentation issues fail
46
+ before generated docs are refreshed.
47
+
48
+ ### Fixed
49
+
50
+ - Worker stdout that happens to contain `RSPEC_FORMATTER_OUTPUT_ID` is now kept
51
+ as ordinary output instead of being parsed as an internal formatter message.
52
+ - kettle-jem-template-20260726-002 - Generated version files now document their
53
+ version namespace and constants, reducing warning-only YARD lint output.
54
+
55
+ - kettle-jem-template-20260726-003 - Coverage upload steps now treat Coveralls,
56
+ QLTY, and Codecov as optional, so provider outages do not fail CI when local
57
+ coverage thresholds still pass.
58
+
59
+ ### Changed
60
+
61
+ - README guidance now distinguishes the `TurboTests` namespace from the
62
+ published `turbo_tests2` gem and executable names, and its Rake/SimpleCov
63
+ examples now use `turbo_tests2` task filenames while keeping SimpleCov's
64
+ default `coverage/` base directory.
65
+
66
+ ## [3.2.2] - 2026-07-25
67
+
68
+ - TAG: [v3.2.2][3.2.2t]
69
+ - COVERAGE: 96.88% -- 869/897 lines in 10 files
70
+ - BRANCH COVERAGE: 84.44% -- 217/257 branches in 10 files
71
+ - 34.69% documented
72
+
73
+ ### Changed
74
+
75
+ - The `turbo_tests2` executable startup header is now shown only when
76
+ `--verbose` is passed; `-v` and `--version` still print just the executable
77
+ version and exit.
78
+
79
+ - kettle-jem-template-20260725-002 - Generated gemspec templates now include
80
+ `anonymous_loader` as a development dependency, and version specs use it to
81
+ execute generated `version.rb` files for coverage without redefining package
82
+ constants. Managed version specs are removed when `version_gem` is disabled
83
+ or incompatible with the project's runtime Ruby floor.
84
+
33
85
  ## [3.2.1] - 2026-07-25
34
86
 
35
87
  - TAG: [v3.2.1][3.2.1t]
@@ -396,7 +448,11 @@ Please file a bug if you notice a violation of semantic versioning.
396
448
 
397
449
  - Initial release
398
450
 
399
- [Unreleased]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.1...HEAD
451
+ [Unreleased]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.3...HEAD
452
+ [3.2.3]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.2...v3.2.3
453
+ [3.2.3t]: https://github.com/galtzo-floss/turbo_tests2/releases/tag/v3.2.3
454
+ [3.2.2]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.1...v3.2.2
455
+ [3.2.2t]: https://github.com/galtzo-floss/turbo_tests2/releases/tag/v3.2.2
400
456
  [3.2.1]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.0...v3.2.1
401
457
  [3.2.1t]: https://github.com/galtzo-floss/turbo_tests2/releases/tag/v3.2.1
402
458
  [3.2.0]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.1.14...v3.2.0
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <a href="https://github.com/galtzo-floss/turbo_tests2"><img alt="turbo_tests2 Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/turbo_tests2/avatar-128px.svg" width="20%" align="right"/></a>
2
2
 
3
- # ๐Ÿš€ TurboTests
3
+ # ๐Ÿš€ TurboTests nรฉe TurboTests2
4
4
 
5
5
  [![Version][๐Ÿ‘ฝversioni]][๐Ÿ‘ฝversion] [![GitHub tag (latest SemVer)][โ›ณ๏ธtag-img]][โ›ณ๏ธtag] [![License: MIT][๐Ÿ“„license-img]][๐Ÿ“„license] [![Downloads Rank][๐Ÿ‘ฝdl-ranki]][๐Ÿ‘ฝdl-rank] [![CodeCov Test Coverage][๐Ÿ€codecovi]][๐Ÿ€codecov] [![Coveralls Test Coverage][๐Ÿ€coveralls-img]][๐Ÿ€coveralls] [![QLTY Test Coverage][๐Ÿ€qlty-covi]][๐Ÿ€qlty-cov] [![QLTY Maintainability][๐Ÿ€qlty-mnti]][๐Ÿ€qlty-mnt] [![CI Heads][๐ŸšŽ3-hd-wfi]][๐ŸšŽ3-hd-wf] [![CI Runtime Dependencies @ HEAD][๐ŸšŽ12-crh-wfi]][๐ŸšŽ12-crh-wf] [![CI Current][๐ŸšŽ11-c-wfi]][๐ŸšŽ11-c-wf] [![CI Truffle Ruby][๐ŸšŽ9-t-wfi]][๐ŸšŽ9-t-wf] [![CI JRuby][๐ŸšŽ10-j-wfi]][๐ŸšŽ10-j-wf] [![Deps Locked][๐ŸšŽ13-๐Ÿ”’๏ธ-wfi]][๐ŸšŽ13-๐Ÿ”’๏ธ-wf] [![Deps Unlocked][๐ŸšŽ14-๐Ÿ”“๏ธ-wfi]][๐ŸšŽ14-๐Ÿ”“๏ธ-wf] [![CI Test Coverage][๐ŸšŽ2-cov-wfi]][๐ŸšŽ2-cov-wf] [![CI Style][๐ŸšŽ5-st-wfi]][๐ŸšŽ5-st-wf] [![Apache SkyWalking Eyes License Compatibility Check][๐ŸšŽ15-๐Ÿชช-wfi]][๐ŸšŽ15-๐Ÿชช-wf]
6
6
 
@@ -26,6 +26,7 @@ I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-ta
26
26
  | I ([@pboling](https://github.com/pboling)) discussed merging this project back into the original `turbo_tests` with [@ilyazub](https://github.com/ilyazub), and we might move in that direction, but it will take time. Since I need this now I'm releasing it as a separate gem/project. We'll be discussing potentially unifying the projects again soon. |
27
27
 
28
28
  `turbo_tests2` is an RSpec parallel test runner built on [grosser/parallel_tests](https://github.com/grosser/parallel_tests). It uses `parallel_tests` for process counts, file grouping, and runtime balancing, then replaces interleaved worker output with incremental summarized RSpec reporting. Source code of this gem is based on [Discourse](https://github.com/discourse/discourse/blob/6b9784cf8a18636bce281a7e4d18e65a0cbc6290/lib/turbo_tests.rb) and [RubyGems](https://github.com/rubygems/rubygems/tree/390335ceb351668cd433bd5bb9823dd021f82533/bundler/tool) work in this area.
29
+ The project namespace remains `TurboTests`; the published gem and executable are `turbo_tests2`.
29
30
 
30
31
  Incremental summarized output doesn't [fit the vision](https://github.com/grosser/parallel_tests/issues/708) of the `parallel_tests` author, and [RSpec doesn't support built-in parallel testing yet](https://github.com/rspec/rspec-rails/issues/2104#issuecomment-658474900). This gem targets RSpec, not every framework supported by `parallel_tests`, and may not be useful once one of the issues above is implemented.
31
32
 
@@ -336,7 +337,7 @@ If Rake is present, the CLI will invoke the tasks `turbo_tests2:setup` and `turb
336
337
  the test suite. These can be used to do work that should only happen once, such as removing files or collating coverage:
337
338
 
338
339
  ```ruby
339
- # lib/tasks/turbo_tests.rake
340
+ # lib/tasks/turbo_tests2.rake
340
341
  namespace :turbo_tests2 do
341
342
  task setup: :environment do
342
343
  # precompile assets once, to avoid doing it per each process
@@ -366,7 +367,7 @@ require "simplecov"
366
367
  SimpleCov.start("rails") do
367
368
  enable_coverage :branch
368
369
 
369
- coverage_dir "coverage/turbo_tests/#{ENV["TEST_ENV_NUMBER"]}"
370
+ coverage_dir "coverage/#{ENV["TEST_ENV_NUMBER"]}"
370
371
 
371
372
  formatter SimpleCov::Formatter::SimpleFormatter
372
373
  end
@@ -375,14 +376,14 @@ end
375
376
  namespace :turbo_tests2 do
376
377
  task setup: :environment do
377
378
  # remove any existing coverage files to avoid false reporting
378
- FileUtils.rm_rf("coverage/turbo_tests")
379
+ FileUtils.rm_rf("coverage")
379
380
  end
380
381
 
381
382
  task cleanup: :environment do
382
383
  require "simplecov"
383
384
 
384
385
  # report coverage usage based on the results of all tests
385
- SimpleCov.collate(Dir["coverage/turbo_tests/*/.resultset.json"]) do
386
+ SimpleCov.collate(Dir["coverage/*/.resultset.json"]) do
386
387
  enable_coverage :branch
387
388
 
388
389
  minimum_coverage line: 100, branch: 100
@@ -769,7 +770,7 @@ Thanks for RTFM. โ˜บ๏ธ
769
770
  [๐Ÿ“Œgitmoji]: https://gitmoji.dev
770
771
  [๐Ÿ“Œgitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
771
772
  [๐Ÿงฎkloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
772
- [๐Ÿงฎkloc-img]: https://img.shields.io/badge/KLOC-0.897-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
773
+ [๐Ÿงฎkloc-img]: https://img.shields.io/badge/KLOC-0.909-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
773
774
  [๐Ÿ”security]: https://github.com/galtzo-floss/turbo_tests2/blob/main/SECURITY.md
774
775
  [๐Ÿ”security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
775
776
  [๐Ÿ“„copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -795,7 +796,7 @@ Thanks for RTFM. โ˜บ๏ธ
795
796
  | Field | Value |
796
797
  |---|---|
797
798
  | Package | turbo_tests2 |
798
- | Description | ๐Ÿš€ turbo_tests2` is an RSpec parallel test runner built on `parallel_tests`. It uses `parallel_tests` for process counts, file grouping, and runtime balancing, then replaces interleaved worker output with incremental summarized RSpec reporting. Source code of `turbo_test2` gem is based on Discourse and Rubygems work in this area (see README.md). |
799
+ | Description | ๐Ÿš€ `turbo_tests2` is an RSpec parallel test runner built on `parallel_tests`. It uses `parallel_tests` for process counts, file grouping, and runtime balancing, then replaces interleaved worker output with incremental summarized RSpec reporting. Source code of the `turbo_tests2` gem is based on Discourse and RubyGems work in this area (see README.md). |
799
800
  | Homepage | https://github.com/galtzo-floss/turbo_tests2 |
800
801
  | Source | https://github.com/galtzo-floss/turbo_tests2 |
801
802
  | License | `MIT` |
data/exe/turbo_tests2 CHANGED
@@ -11,6 +11,6 @@ end
11
11
  # Alias for `turbo_tests` โ€” turbo_tests2 is a drop-in replacement for turbo_tests.
12
12
  require "turbo_tests2"
13
13
 
14
- puts "== #{script_basename} v#{TurboTests::Version::VERSION} =="
14
+ puts "== #{script_basename} v#{TurboTests::Version::VERSION} ==" if ARGV.include?("--verbose")
15
15
 
16
16
  TurboTests::CLI.new(ARGV).run
@@ -434,19 +434,7 @@ module TurboTests
434
434
  begin
435
435
  output_id = env["RSPEC_FORMATTER_OUTPUT_ID"].b
436
436
  stdout.each_line do |line|
437
- result = line.b.split(output_id)
438
-
439
- initial = result.shift
440
- append_worker_output(process_id, :stdout, initial) unless initial.empty?
441
-
442
- message = result.shift
443
- next unless message
444
-
445
- message = message.dup.force_encoding(Encoding::UTF_8).scrub
446
- message = JSON.parse(message, symbolize_names: true)
447
-
448
- message[:process_id] = process_id
449
- @messages << message
437
+ parse_worker_stdout_line(line, output_id, process_id)
450
438
  end
451
439
  rescue IOError
452
440
  nil
@@ -525,6 +513,37 @@ module TurboTests
525
513
  io.write(msg) if stream_worker_output?
526
514
  end
527
515
 
516
+ def parse_worker_stdout_line(line, output_id, process_id)
517
+ remaining = line.b.dup
518
+ loop do
519
+ before, separator, after = remaining.partition(output_id)
520
+ append_worker_output(process_id, :stdout, before) unless before.empty?
521
+ break if separator.empty?
522
+
523
+ if after.start_with?("{")
524
+ message = parse_worker_json_message(after, process_id)
525
+ if message
526
+ @messages << message
527
+ break
528
+ end
529
+ end
530
+
531
+ append_worker_output(process_id, :stdout, separator)
532
+ remaining = after
533
+ end
534
+ end
535
+
536
+ def parse_worker_json_message(raw_message, process_id)
537
+ message = raw_message.dup.force_encoding(Encoding::UTF_8).scrub
538
+ message = JSON.parse(message, symbolize_names: true)
539
+ return unless message.is_a?(Hash) && message[:type].is_a?(String)
540
+
541
+ message[:process_id] = process_id
542
+ message
543
+ rescue JSON::ParserError
544
+ nil
545
+ end
546
+
528
547
  def stream_worker_output?
529
548
  @verbose || @worker_output_mode == :stream
530
549
  end
@@ -1,8 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TurboTests
4
+ # Version namespace for this gem.
4
5
  module Version
5
- VERSION = "3.2.1"
6
+ # Current gem version.
7
+ VERSION = "3.2.3"
6
8
  end
9
+ # Current gem version exposed at the traditional constant location.
7
10
  VERSION = Version::VERSION # Traditional Constant Location
8
11
  end
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.1
4
+ version: 3.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Illia
@@ -169,6 +169,26 @@ dependencies:
169
169
  - - ">="
170
170
  - !ruby/object:Gem::Version
171
171
  version: 1.0.4
172
+ - !ruby/object:Gem::Dependency
173
+ name: anonymous_loader
174
+ requirement: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - "~>"
177
+ - !ruby/object:Gem::Version
178
+ version: '0.1'
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: 0.1.3
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - "~>"
187
+ - !ruby/object:Gem::Version
188
+ version: '0.1'
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ version: 0.1.3
172
192
  - !ruby/object:Gem::Dependency
173
193
  name: appraisal2
174
194
  requirement: !ruby/object:Gem::Requirement
@@ -232,7 +252,7 @@ dependencies:
232
252
  version: '1.0'
233
253
  - - ">="
234
254
  - !ruby/object:Gem::Version
235
- version: 1.0.6
255
+ version: 1.0.7
236
256
  type: :development
237
257
  prerelease: false
238
258
  version_requirements: !ruby/object:Gem::Requirement
@@ -242,7 +262,7 @@ dependencies:
242
262
  version: '1.0'
243
263
  - - ">="
244
264
  - !ruby/object:Gem::Version
245
- version: 1.0.6
265
+ version: 1.0.7
246
266
  - !ruby/object:Gem::Dependency
247
267
  name: gitmoji-regex
248
268
  requirement: !ruby/object:Gem::Requirement
@@ -252,7 +272,7 @@ dependencies:
252
272
  version: '2.0'
253
273
  - - ">="
254
274
  - !ruby/object:Gem::Version
255
- version: 2.0.4
275
+ version: 2.0.6
256
276
  type: :development
257
277
  prerelease: false
258
278
  version_requirements: !ruby/object:Gem::Requirement
@@ -262,7 +282,7 @@ dependencies:
262
282
  version: '2.0'
263
283
  - - ">="
264
284
  - !ruby/object:Gem::Version
265
- version: 2.0.4
285
+ version: 2.0.6
266
286
  description: "\U0001F680 turbo_tests2` is an RSpec parallel test runner built on `parallel_tests`.
267
287
  It uses `parallel_tests` for process counts, file grouping, and runtime balancing,
268
288
  then replaces interleaved worker output with incremental summarized RSpec reporting.
@@ -294,10 +314,10 @@ licenses:
294
314
  - MIT
295
315
  metadata:
296
316
  homepage_uri: https://turbo-tests2.galtzo.com
297
- source_code_uri: https://github.com/galtzo-floss/turbo_tests2/tree/v3.2.1
298
- changelog_uri: https://github.com/galtzo-floss/turbo_tests2/blob/v3.2.1/CHANGELOG.md
317
+ source_code_uri: https://github.com/galtzo-floss/turbo_tests2/tree/v3.2.3
318
+ changelog_uri: https://github.com/galtzo-floss/turbo_tests2/blob/v3.2.3/CHANGELOG.md
299
319
  bug_tracker_uri: https://github.com/galtzo-floss/turbo_tests2/issues
300
- documentation_uri: https://www.rubydoc.info/gems/turbo_tests2/3.2.1
320
+ documentation_uri: https://www.rubydoc.info/gems/turbo_tests2/3.2.3
301
321
  funding_uri: https://github.com/sponsors/pboling
302
322
  wiki_uri: https://github.com/galtzo-floss/turbo_tests2/wiki
303
323
  news_uri: https://www.railsbling.com/tags/turbo_tests2
metadata.gz.sig CHANGED
Binary file