turbo_tests2 3.1.12 → 3.1.14
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 +1 -1
- data/lib/turbo_tests/runner.rb +64 -1
- data/lib/turbo_tests/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +4 -4
- 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: b4031f877288b31974b622b8dffb0acffb1361ee96347d695ea69dd9c47a5950
|
|
4
|
+
data.tar.gz: 8bc186019f3b056c15dc2f68cf42b2062a68f4dc9d1fa34c397446933ac37999
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9a28f75223e3bd926d6cc5ebf4e94bd0de1efa10b82eab792e595cedc73aa1a6bb398e2093058f170c4c7a2d5a76d4b7dc1e8edcc0d01971e4d03d7406d97170
|
|
7
|
+
data.tar.gz: 4eed7b464c8e3d26419a2822bdeed6c60084c5e25968352af3a053d728f25004b18383b4fed4ab13994f3dfcb28a02e23542560c51c1a1c73fbb3a03ffa90755
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,33 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [3.1.14] - 2026-07-17
|
|
34
|
+
|
|
35
|
+
- TAG: [v3.1.14][3.1.14t]
|
|
36
|
+
- COVERAGE: 97.30% -- 758/779 lines in 10 files
|
|
37
|
+
- BRANCH COVERAGE: 88.26% -- 188/213 branches in 10 files
|
|
38
|
+
- 35.11% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Worker commands now override RSpec's default options file, then explicitly
|
|
43
|
+
pass filtered project `.rspec` options. File-discovery options such as
|
|
44
|
+
`--pattern` are dropped after `turbo_tests2` has already selected each shard,
|
|
45
|
+
preventing aggregate suite patterns from making every worker run the full
|
|
46
|
+
suite while preserving options like `--require spec_helper`.
|
|
47
|
+
|
|
48
|
+
## [3.1.13] - 2026-07-16
|
|
49
|
+
|
|
50
|
+
- TAG: [v3.1.13][3.1.13t]
|
|
51
|
+
- COVERAGE: 97.50% -- 741/760 lines in 10 files
|
|
52
|
+
- BRANCH COVERAGE: 88.35% -- 182/206 branches in 10 files
|
|
53
|
+
- 35.87% documented
|
|
54
|
+
|
|
55
|
+
### Fixed
|
|
56
|
+
|
|
57
|
+
- Duplicate RSpec `Run options:` messages from parallel workers are now
|
|
58
|
+
collapsed so they no longer interrupt progress formatter output repeatedly.
|
|
59
|
+
|
|
33
60
|
## [3.1.12] - 2026-07-16
|
|
34
61
|
|
|
35
62
|
- TAG: [v3.1.12][3.1.12t]
|
|
@@ -275,7 +302,11 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
275
302
|
|
|
276
303
|
- Initial release
|
|
277
304
|
|
|
278
|
-
[Unreleased]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.1.
|
|
305
|
+
[Unreleased]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.1.14...HEAD
|
|
306
|
+
[3.1.14]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.1.13...v3.1.14
|
|
307
|
+
[3.1.14t]: https://github.com/galtzo-floss/turbo_tests2/releases/tag/v3.1.14
|
|
308
|
+
[3.1.13]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.1.12...v3.1.13
|
|
309
|
+
[3.1.13t]: https://github.com/galtzo-floss/turbo_tests2/releases/tag/v3.1.13
|
|
279
310
|
[3.1.12]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.1.11...v3.1.12
|
|
280
311
|
[3.1.12t]: https://github.com/galtzo-floss/turbo_tests2/releases/tag/v3.1.12
|
|
281
312
|
[3.1.11]: https://github.com/galtzo-floss/turbo_tests2/compare/v3.1.10...v3.1.11
|
data/README.md
CHANGED
|
@@ -666,7 +666,7 @@ Thanks for RTFM. ☺️
|
|
|
666
666
|
[📌gitmoji]: https://gitmoji.dev
|
|
667
667
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
668
668
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
669
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.
|
|
669
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.779-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
670
670
|
[🔐security]: https://github.com/galtzo-floss/turbo_tests2/blob/main/SECURITY.md
|
|
671
671
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
672
672
|
[📄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
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
require "json"
|
|
4
4
|
require "parallel_tests/rspec/runner"
|
|
5
5
|
require "rspec/core"
|
|
6
|
+
require "shellwords"
|
|
6
7
|
require "tempfile"
|
|
7
8
|
|
|
8
9
|
require_relative "../utils/hash_extension"
|
|
@@ -142,6 +143,39 @@ module TurboTests
|
|
|
142
143
|
path.start_with?(root) ? path[root.length..-1] : path
|
|
143
144
|
end
|
|
144
145
|
end
|
|
146
|
+
|
|
147
|
+
def worker_spec_opts(spec_opts)
|
|
148
|
+
args = project_rspec_options + Array(spec_opts)
|
|
149
|
+
filtered = []
|
|
150
|
+
skip_next = false
|
|
151
|
+
|
|
152
|
+
args.each do |arg|
|
|
153
|
+
if skip_next
|
|
154
|
+
skip_next = false
|
|
155
|
+
next
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
case arg
|
|
159
|
+
when "--pattern", "-P", "--default-path"
|
|
160
|
+
skip_next = true
|
|
161
|
+
when /\A--pattern=/, /\A-P.+/, /\A--default-path=/
|
|
162
|
+
next
|
|
163
|
+
else
|
|
164
|
+
filtered << arg
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
filtered
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def project_rspec_options(root = Dir.pwd)
|
|
172
|
+
%w[.rspec .rspec-local].flat_map do |path|
|
|
173
|
+
option_file = File.join(root, path)
|
|
174
|
+
next [] unless File.file?(option_file)
|
|
175
|
+
|
|
176
|
+
Shellwords.split(File.read(option_file))
|
|
177
|
+
end
|
|
178
|
+
end
|
|
145
179
|
end
|
|
146
180
|
|
|
147
181
|
def initialize(**opts)
|
|
@@ -177,6 +211,7 @@ module TurboTests
|
|
|
177
211
|
@exited_process_ids = []
|
|
178
212
|
@worker_output = Hash.new { |hash, process_id| hash[process_id] = {stdout: +"", stderr: +""} }
|
|
179
213
|
@worker_output_mutex = Mutex.new
|
|
214
|
+
@deferred_run_options_messages = Hash.new { |hash, message| hash[message] = [] }
|
|
180
215
|
@error = false
|
|
181
216
|
@print_failed_group = opts[:print_failed_group]
|
|
182
217
|
end
|
|
@@ -324,10 +359,12 @@ module TurboTests
|
|
|
324
359
|
[]
|
|
325
360
|
end
|
|
326
361
|
|
|
327
|
-
spec_opts = ParallelTests::RSpec::Runner.send(:spec_opts)
|
|
362
|
+
spec_opts = self.class.worker_spec_opts(ParallelTests::RSpec::Runner.send(:spec_opts))
|
|
328
363
|
|
|
329
364
|
command = [
|
|
330
365
|
*command_name,
|
|
366
|
+
"--options",
|
|
367
|
+
File::NULL,
|
|
331
368
|
*extra_args,
|
|
332
369
|
*seed_option,
|
|
333
370
|
"--format",
|
|
@@ -544,6 +581,8 @@ module TurboTests
|
|
|
544
581
|
if message[:message].include?("An error occurred") || message[:message].include?("occurred outside of examples")
|
|
545
582
|
@reporter.error_outside_of_examples(message[:message])
|
|
546
583
|
@error = true
|
|
584
|
+
elsif run_options_message?(message[:message])
|
|
585
|
+
defer_run_options_message(message[:message], message[:process_id])
|
|
547
586
|
else
|
|
548
587
|
@reporter.message(message[:message])
|
|
549
588
|
end
|
|
@@ -567,9 +606,33 @@ module TurboTests
|
|
|
567
606
|
|
|
568
607
|
$stdout.flush
|
|
569
608
|
end
|
|
609
|
+
|
|
610
|
+
flush_deferred_run_options_messages
|
|
570
611
|
rescue Interrupt
|
|
571
612
|
end
|
|
572
613
|
|
|
614
|
+
def run_options_message?(message)
|
|
615
|
+
message.to_s.start_with?("Run options:")
|
|
616
|
+
end
|
|
617
|
+
|
|
618
|
+
def defer_run_options_message(message, process_id)
|
|
619
|
+
@deferred_run_options_messages[message] << process_id
|
|
620
|
+
end
|
|
621
|
+
|
|
622
|
+
def flush_deferred_run_options_messages
|
|
623
|
+
return if @deferred_run_options_messages.empty?
|
|
624
|
+
|
|
625
|
+
if @deferred_run_options_messages.one?
|
|
626
|
+
@reporter.message(@deferred_run_options_messages.keys.first)
|
|
627
|
+
else
|
|
628
|
+
lines = @deferred_run_options_messages.map do |message, process_ids|
|
|
629
|
+
" workers #{process_ids.uniq.sort.join(", ")}: #{message}"
|
|
630
|
+
end
|
|
631
|
+
@reporter.message(["Run options by worker:", *lines].join("\n"))
|
|
632
|
+
end
|
|
633
|
+
@deferred_run_options_messages.clear
|
|
634
|
+
end
|
|
635
|
+
|
|
573
636
|
def close_io(io)
|
|
574
637
|
io.close unless io.closed?
|
|
575
638
|
rescue IOError
|
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.14
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Illia
|
|
@@ -312,10 +312,10 @@ licenses:
|
|
|
312
312
|
- MIT
|
|
313
313
|
metadata:
|
|
314
314
|
homepage_uri: https://turbo-tests2.galtzo.com
|
|
315
|
-
source_code_uri: https://github.com/galtzo-floss/turbo_tests2/tree/v3.1.
|
|
316
|
-
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.14
|
|
316
|
+
changelog_uri: https://github.com/galtzo-floss/turbo_tests2/blob/v3.1.14/CHANGELOG.md
|
|
317
317
|
bug_tracker_uri: https://github.com/galtzo-floss/turbo_tests2/issues
|
|
318
|
-
documentation_uri: https://www.rubydoc.info/gems/turbo_tests2/3.1.
|
|
318
|
+
documentation_uri: https://www.rubydoc.info/gems/turbo_tests2/3.1.14
|
|
319
319
|
funding_uri: https://github.com/sponsors/pboling
|
|
320
320
|
wiki_uri: https://github.com/galtzo-floss/turbo_tests2/wiki
|
|
321
321
|
news_uri: https://www.railsbling.com/tags/turbo_tests2
|
metadata.gz.sig
CHANGED
|
Binary file
|