turbo_tests2 3.2.2 → 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: d4b62550813a3e7662e0aef29a0a881fbd3d20852290aa6a1383de126e72c2fa
4
- data.tar.gz: 3164bc7cd37b3be39086244075f444e916dfc05e92eeb746a51d09e5ab22d0d0
3
+ metadata.gz: 2af1fec1f172642796e8d50a8debcf093fe47adc8631fc38d87f21594208695c
4
+ data.tar.gz: 9c37a6eb91300dd299ccfb54aefe2363ddb53fa679b6114371b8dd84a2bdbbc8
5
5
  SHA512:
6
- metadata.gz: 3bbbc2ccf13b86e877b0098662ff821575cb7ca6518018fdb7ff3cb82cf81c6402cf41646cce8b4465c4d44a5c2c8a307650303b0b958581279616b5cb2c2635
7
- data.tar.gz: 189974b5124e63b697ae2f21445ff5fd0f2db690e65eab5b3768cced83e8836ead964461cb155c7d3c4da0a83c2514c46e9f9d5b74fd5dbf6b40cd9dc695478d
6
+ metadata.gz: 91c905b362cec739c3e5294abba63cb23226131c2b1763ae57df9197961c5d8d802800931b012a164b194b5a46bd30fa0fece33c2003b1751319bc93dd345472
7
+ data.tar.gz: a781315b43d20f6e482094ce4672fcf29dba858625a6006e63d146e3e4831d168831ad74f2ba3ea93a668e295490bb8e27baaadb0793c5747cb4c1a0a2f97918
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,39 @@ 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
+
33
66
  ## [3.2.2] - 2026-07-25
34
67
 
35
68
  - TAG: [v3.2.2][3.2.2t]
@@ -415,7 +448,9 @@ Please file a bug if you notice a violation of semantic versioning.
415
448
 
416
449
  - Initial release
417
450
 
418
- [Unreleased]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.2...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
419
454
  [3.2.2]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.1...v3.2.2
420
455
  [3.2.2t]: https://github.com/galtzo-floss/turbo_tests2/releases/tag/v3.2.2
421
456
  [3.2.1]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.2.0...v3.2.1
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` |
@@ -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.2"
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.2
4
+ version: 3.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Illia
@@ -314,10 +314,10 @@ licenses:
314
314
  - MIT
315
315
  metadata:
316
316
  homepage_uri: https://turbo-tests2.galtzo.com
317
- source_code_uri: https://github.com/galtzo-floss/turbo_tests2/tree/v3.2.2
318
- changelog_uri: https://github.com/galtzo-floss/turbo_tests2/blob/v3.2.2/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
319
319
  bug_tracker_uri: https://github.com/galtzo-floss/turbo_tests2/issues
320
- documentation_uri: https://www.rubydoc.info/gems/turbo_tests2/3.2.2
320
+ documentation_uri: https://www.rubydoc.info/gems/turbo_tests2/3.2.3
321
321
  funding_uri: https://github.com/sponsors/pboling
322
322
  wiki_uri: https://github.com/galtzo-floss/turbo_tests2/wiki
323
323
  news_uri: https://www.railsbling.com/tags/turbo_tests2
metadata.gz.sig CHANGED
Binary file