turbo_tests2 3.1.6 → 3.1.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +32 -1
- data/README.md +5 -5
- data/lib/turbo_tests/cli.rb +3 -3
- data/lib/turbo_tests/json_rows_formatter.rb +14 -1
- data/lib/turbo_tests/runner.rb +3 -1
- data/lib/turbo_tests/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +24 -22
- 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: 896b2cd3a1a1e517516e76797c8a6a9783d1883d43a215086c165ecb72eea59c
|
|
4
|
+
data.tar.gz: ce168afe9a512e7ab9d10cc165d034e2a9d0e8cbe735583ea0c4d7742134ff4b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 24ec7b6ddde8980013440ccdc0792ba033698470f73469dd726028778bcfc2afaf29e146c421ec924475b1937c2a7253e43bc8e193fb2cdd695ad953e3a009ad
|
|
7
|
+
data.tar.gz: f26102397a81ae27a5518451a8be811d4346674e7b98c3cbfb692a45f58422ce5a2c4090bf3aa13d0a52d7000f654848295e37a3e0ef73987ddcc2383bd7a5e8
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -28,8 +28,35 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
28
28
|
|
|
29
29
|
### Fixed
|
|
30
30
|
|
|
31
|
+
- Prevented invalid UTF-8 bytes in worker output from crashing the parent
|
|
32
|
+
runner on JRuby after the underlying RSpec examples pass.
|
|
33
|
+
|
|
31
34
|
### Security
|
|
32
35
|
|
|
36
|
+
## [3.1.8] - 2026-07-14
|
|
37
|
+
|
|
38
|
+
- TAG: [v3.1.8][3.1.8t]
|
|
39
|
+
- COVERAGE: 97.40% -- 636/653 lines in 10 files
|
|
40
|
+
- BRANCH COVERAGE: 89.47% -- 136/152 branches in 10 files
|
|
41
|
+
- 37.08% documented
|
|
42
|
+
|
|
43
|
+
## [3.1.7] - 2026-07-11
|
|
44
|
+
|
|
45
|
+
- TAG: [v3.1.7][3.1.7t]
|
|
46
|
+
- COVERAGE: 97.40% -- 636/653 lines in 10 files
|
|
47
|
+
- BRANCH COVERAGE: 89.47% -- 136/152 branches in 10 files
|
|
48
|
+
- 37.08% documented
|
|
49
|
+
|
|
50
|
+
### Changed
|
|
51
|
+
|
|
52
|
+
- Clarified project metadata, README, and CLI help to describe `turbo_tests2`
|
|
53
|
+
as an RSpec parallel runner built on `parallel_tests`.
|
|
54
|
+
|
|
55
|
+
### Fixed
|
|
56
|
+
|
|
57
|
+
- Fixed generated README metadata backticks around `turbo_tests2` in the
|
|
58
|
+
package description.
|
|
59
|
+
|
|
33
60
|
## [3.1.6] - 2026-07-02
|
|
34
61
|
|
|
35
62
|
- TAG: [v3.1.6][3.1.6t]
|
|
@@ -196,7 +223,11 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
196
223
|
|
|
197
224
|
- Initial release
|
|
198
225
|
|
|
199
|
-
[Unreleased]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.1.
|
|
226
|
+
[Unreleased]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.1.8...HEAD
|
|
227
|
+
[3.1.8]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.1.7...v3.1.8
|
|
228
|
+
[3.1.8t]: https://github.com/galtzo-floss/turbo_tests2/releases/tag/v3.1.8
|
|
229
|
+
[3.1.7]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.1.6...v3.1.7
|
|
230
|
+
[3.1.7t]: https://github.com/galtzo-floss/turbo_tests2/releases/tag/v3.1.7
|
|
200
231
|
[3.1.6]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.1.5...v3.1.6
|
|
201
232
|
[3.1.6t]: https://github.com/galtzo-floss/turbo_tests2/releases/tag/v3.1.6
|
|
202
233
|
[3.1.5]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.1.4...v3.1.5
|
data/README.md
CHANGED
|
@@ -25,13 +25,13 @@ I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-ta
|
|
|
25
25
|
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
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
|
-
`turbo_tests2` is
|
|
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
29
|
|
|
30
|
-
Incremental summarized output doesn't [fit vision](https://github.com/grosser/parallel_tests/issues/708) of `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
|
|
30
|
+
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
31
|
|
|
32
32
|
### Why incremental output?
|
|
33
33
|
|
|
34
|
-
`parallel_tests` is great, but
|
|
34
|
+
`parallel_tests` is great, but parallel RSpec output is hard to read:
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
37
|
|
|
@@ -205,7 +205,7 @@ Options:
|
|
|
205
205
|
--example-status-log FILE Use RSpec example status persistence timings for grouping
|
|
206
206
|
-v, --verbose More output
|
|
207
207
|
--fail-fast=[N]
|
|
208
|
-
--seed SEED Seed for
|
|
208
|
+
--seed SEED Seed for RSpec
|
|
209
209
|
--order ORDER RSpec example order: random (default) or defined
|
|
210
210
|
--no-random Run examples in defined order without passing a seed
|
|
211
211
|
--create Create databases
|
|
@@ -692,7 +692,7 @@ Thanks for RTFM. ☺️
|
|
|
692
692
|
| Field | Value |
|
|
693
693
|
|---|---|
|
|
694
694
|
| Package | turbo_tests2 |
|
|
695
|
-
| Description | 🚀 turbo_tests2` is
|
|
695
|
+
| 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). |
|
|
696
696
|
| Homepage | https://github.com/galtzo-floss/turbo_tests2 |
|
|
697
697
|
| Source | https://github.com/galtzo-floss/turbo_tests2 |
|
|
698
698
|
| License | `MIT` |
|
data/lib/turbo_tests/cli.rb
CHANGED
|
@@ -28,9 +28,9 @@ module TurboTests
|
|
|
28
28
|
|
|
29
29
|
OptionParser.new do |opts|
|
|
30
30
|
opts.banner = <<~BANNER
|
|
31
|
-
Run
|
|
31
|
+
Run RSpec files in parallel, giving each process ENV['TEST_ENV_NUMBER'] ('1', '2', '3', ...).
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
Uses `parallel_tests` to split files into groups, then reports RSpec results incrementally.
|
|
34
34
|
|
|
35
35
|
Source code of `turbo_tests2` gem is based on Discourse and RubyGems work in this area (see README file of the source repository).
|
|
36
36
|
|
|
@@ -96,7 +96,7 @@ module TurboTests
|
|
|
96
96
|
fail_fast = (n.nil? || n < 1) ? 1 : n
|
|
97
97
|
end
|
|
98
98
|
|
|
99
|
-
opts.on("--seed SEED", "Seed for
|
|
99
|
+
opts.on("--seed SEED", "Seed for RSpec") do |s|
|
|
100
100
|
seed = s
|
|
101
101
|
end
|
|
102
102
|
|
|
@@ -210,8 +210,21 @@ module TurboTests
|
|
|
210
210
|
end
|
|
211
211
|
|
|
212
212
|
def output_row(obj)
|
|
213
|
-
output.puts "#{ENV.fetch("RSPEC_FORMATTER_OUTPUT_ID", "")}#{obj.to_json}"
|
|
213
|
+
output.puts "#{ENV.fetch("RSPEC_FORMATTER_OUTPUT_ID", "")}#{json_ready(obj).to_json}"
|
|
214
214
|
output.flush
|
|
215
215
|
end
|
|
216
|
+
|
|
217
|
+
def json_ready(obj)
|
|
218
|
+
case obj
|
|
219
|
+
when Hash
|
|
220
|
+
obj.transform_values { |value| json_ready(value) }
|
|
221
|
+
when Array
|
|
222
|
+
obj.map { |value| json_ready(value) }
|
|
223
|
+
when String
|
|
224
|
+
obj.dup.force_encoding(Encoding::UTF_8).scrub
|
|
225
|
+
else
|
|
226
|
+
obj
|
|
227
|
+
end
|
|
228
|
+
end
|
|
216
229
|
end
|
|
217
230
|
end
|
data/lib/turbo_tests/runner.rb
CHANGED
|
@@ -297,8 +297,9 @@ module TurboTests
|
|
|
297
297
|
stdout_thread =
|
|
298
298
|
Thread.new do
|
|
299
299
|
begin
|
|
300
|
+
output_id = env["RSPEC_FORMATTER_OUTPUT_ID"].b
|
|
300
301
|
stdout.each_line do |line|
|
|
301
|
-
result = line.split(
|
|
302
|
+
result = line.b.split(output_id)
|
|
302
303
|
|
|
303
304
|
initial = result.shift
|
|
304
305
|
print(initial) unless initial.empty?
|
|
@@ -306,6 +307,7 @@ module TurboTests
|
|
|
306
307
|
message = result.shift
|
|
307
308
|
next unless message
|
|
308
309
|
|
|
310
|
+
message = message.dup.force_encoding(Encoding::UTF_8).scrub
|
|
309
311
|
message = JSON.parse(message, symbolize_names: true)
|
|
310
312
|
|
|
311
313
|
message[:process_id] = process_id
|
data/lib/turbo_tests/version.rb
CHANGED
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.1.
|
|
4
|
+
version: 3.1.8
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Illia
|
|
@@ -90,7 +90,7 @@ dependencies:
|
|
|
90
90
|
version: '1.1'
|
|
91
91
|
- - ">="
|
|
92
92
|
- !ruby/object:Gem::Version
|
|
93
|
-
version: 1.1.
|
|
93
|
+
version: 1.1.14
|
|
94
94
|
type: :runtime
|
|
95
95
|
prerelease: false
|
|
96
96
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -100,7 +100,7 @@ dependencies:
|
|
|
100
100
|
version: '1.1'
|
|
101
101
|
- - ">="
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: 1.1.
|
|
103
|
+
version: 1.1.14
|
|
104
104
|
- !ruby/object:Gem::Dependency
|
|
105
105
|
name: kettle-dev
|
|
106
106
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -110,7 +110,7 @@ dependencies:
|
|
|
110
110
|
version: '2.3'
|
|
111
111
|
- - ">="
|
|
112
112
|
- !ruby/object:Gem::Version
|
|
113
|
-
version: 2.3.
|
|
113
|
+
version: 2.3.4
|
|
114
114
|
type: :development
|
|
115
115
|
prerelease: false
|
|
116
116
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -120,7 +120,7 @@ dependencies:
|
|
|
120
120
|
version: '2.3'
|
|
121
121
|
- - ">="
|
|
122
122
|
- !ruby/object:Gem::Version
|
|
123
|
-
version: 2.3.
|
|
123
|
+
version: 2.3.4
|
|
124
124
|
- !ruby/object:Gem::Dependency
|
|
125
125
|
name: bundler-audit
|
|
126
126
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -198,7 +198,7 @@ dependencies:
|
|
|
198
198
|
version: '2.0'
|
|
199
199
|
- - ">="
|
|
200
200
|
- !ruby/object:Gem::Version
|
|
201
|
-
version: 2.0.
|
|
201
|
+
version: 2.0.10
|
|
202
202
|
type: :development
|
|
203
203
|
prerelease: false
|
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -208,7 +208,7 @@ dependencies:
|
|
|
208
208
|
version: '2.0'
|
|
209
209
|
- - ">="
|
|
210
210
|
- !ruby/object:Gem::Version
|
|
211
|
-
version: 2.0.
|
|
211
|
+
version: 2.0.10
|
|
212
212
|
- !ruby/object:Gem::Dependency
|
|
213
213
|
name: ruby-progressbar
|
|
214
214
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -232,7 +232,7 @@ dependencies:
|
|
|
232
232
|
version: '1.0'
|
|
233
233
|
- - ">="
|
|
234
234
|
- !ruby/object:Gem::Version
|
|
235
|
-
version: 1.0.
|
|
235
|
+
version: 1.0.6
|
|
236
236
|
type: :development
|
|
237
237
|
prerelease: false
|
|
238
238
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -242,7 +242,7 @@ dependencies:
|
|
|
242
242
|
version: '1.0'
|
|
243
243
|
- - ">="
|
|
244
244
|
- !ruby/object:Gem::Version
|
|
245
|
-
version: 1.0.
|
|
245
|
+
version: 1.0.6
|
|
246
246
|
- !ruby/object:Gem::Dependency
|
|
247
247
|
name: gitmoji-regex
|
|
248
248
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -252,7 +252,7 @@ dependencies:
|
|
|
252
252
|
version: '2.0'
|
|
253
253
|
- - ">="
|
|
254
254
|
- !ruby/object:Gem::Version
|
|
255
|
-
version: 2.0.
|
|
255
|
+
version: 2.0.4
|
|
256
256
|
type: :development
|
|
257
257
|
prerelease: false
|
|
258
258
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -262,10 +262,12 @@ dependencies:
|
|
|
262
262
|
version: '2.0'
|
|
263
263
|
- - ">="
|
|
264
264
|
- !ruby/object:Gem::Version
|
|
265
|
-
version: 2.0.
|
|
266
|
-
description: "\U0001F680 turbo_tests2` is
|
|
267
|
-
|
|
268
|
-
|
|
265
|
+
version: 2.0.4
|
|
266
|
+
description: "\U0001F680 turbo_tests2` is an RSpec parallel test runner built on `parallel_tests`.
|
|
267
|
+
It uses `parallel_tests` for process counts, file grouping, and runtime balancing,
|
|
268
|
+
then replaces interleaved worker output with incremental summarized RSpec reporting.
|
|
269
|
+
Source code of `turbo_test2` gem is based on Discourse and Rubygems work in this
|
|
270
|
+
area (see README.md)."
|
|
269
271
|
email:
|
|
270
272
|
- floss@galtzo.com
|
|
271
273
|
executables:
|
|
@@ -310,10 +312,10 @@ licenses:
|
|
|
310
312
|
- MIT
|
|
311
313
|
metadata:
|
|
312
314
|
homepage_uri: https://turbo-tests2.galtzo.com
|
|
313
|
-
source_code_uri: https://github.com/galtzo-floss/turbo_tests2/tree/v3.1.
|
|
314
|
-
changelog_uri: https://github.com/galtzo-floss/turbo_tests2/blob/v3.1.
|
|
315
|
+
source_code_uri: https://github.com/galtzo-floss/turbo_tests2/tree/v3.1.8
|
|
316
|
+
changelog_uri: https://github.com/galtzo-floss/turbo_tests2/blob/v3.1.8/CHANGELOG.md
|
|
315
317
|
bug_tracker_uri: https://github.com/galtzo-floss/turbo_tests2/issues
|
|
316
|
-
documentation_uri: https://www.rubydoc.info/gems/turbo_tests2/3.1.
|
|
318
|
+
documentation_uri: https://www.rubydoc.info/gems/turbo_tests2/3.1.8
|
|
317
319
|
funding_uri: https://github.com/sponsors/pboling
|
|
318
320
|
wiki_uri: https://github.com/galtzo-floss/turbo_tests2/wiki
|
|
319
321
|
news_uri: https://www.railsbling.com/tags/turbo_tests2
|
|
@@ -321,8 +323,8 @@ metadata:
|
|
|
321
323
|
rubygems_mfa_required: 'true'
|
|
322
324
|
rdoc_options:
|
|
323
325
|
- "--title"
|
|
324
|
-
- "turbo_tests2 - \U0001F680
|
|
325
|
-
|
|
326
|
+
- "turbo_tests2 - \U0001F680 RSpec parallel test runner built on `parallel_tests`,
|
|
327
|
+
with incremental summarized output"
|
|
326
328
|
- "--main"
|
|
327
329
|
- README.md
|
|
328
330
|
- "--exclude"
|
|
@@ -343,8 +345,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
343
345
|
- !ruby/object:Gem::Version
|
|
344
346
|
version: '0'
|
|
345
347
|
requirements: []
|
|
346
|
-
rubygems_version: 4.0.
|
|
348
|
+
rubygems_version: 4.0.16
|
|
347
349
|
specification_version: 4
|
|
348
|
-
summary: "\U0001F680
|
|
349
|
-
|
|
350
|
+
summary: "\U0001F680 RSpec parallel test runner built on `parallel_tests`, with incremental
|
|
351
|
+
summarized output"
|
|
350
352
|
test_files: []
|
metadata.gz.sig
CHANGED
|
Binary file
|