kettle-test 2.0.29 → 2.0.30

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: 4c32ea40c527580f707c23b77ec3c302546f1973a720a691453a4dabba34c69f
4
- data.tar.gz: 6154f6de6057d3ac5bd39848b11389f24fbf5384b57da6fa4bc25765ed6e0b17
3
+ metadata.gz: a63dbe1a52bd86c0cb0a2c62284d8ecb7cb9a11e351e8d159a08adce19cf7c5b
4
+ data.tar.gz: 8570f606a7bd22d57e510d78de8f6e30750fca48856fba5514a49b01f5c4527e
5
5
  SHA512:
6
- metadata.gz: 6ccfd4ed2e8f8582bafb1bea1f17b5807db6c709268686225908808118634485c86dbbc5dab87dbd0bb27c20fef3f25b91f63d570e2080174e684c6fcd528afc
7
- data.tar.gz: a0e5979100ec93a959653d044f9e77952f0c594c9f5d38cab92ed5ee693d3480528eb83a8e8990de666120049d0dbc76d2fef25d74838dec8e2c9ed1fd91f670
6
+ metadata.gz: 4e07ebfc2d08021909065f366d2114e13c96fbee2ce6d2248724c1ffeb5b803c3865a9eb0bfa9463881033a674218f7d0ffc83b6247fe4f2f076ffd6be3f474f
7
+ data.tar.gz: 25efabc4b5e51a75e6f0cfaea31ed441a7d9740b6f786d549e85fe02fbe6414feed6be5176473dab53ef61a6a0ab45b7e7d94d38b530f4b827f925e9f2d2cd8e
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,28 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [2.0.30] - 2026-11-15
34
+
35
+ - TAG: [v2.0.30][2.0.30t]
36
+ - COVERAGE: 97.46% -- 115/118 lines in 19 files
37
+ - BRANCH COVERAGE: 100.00% -- 2/2 branches in 19 files
38
+ - 85.71% documented
39
+
40
+ ### Added
41
+
42
+ - `Kettle::Test::ProgressFormatter`: opt-in (`KETTLE_TEST_EVENTS=1`) throttled `test_progress` NDJSON events for plain rspec runs, an adapter over `Kettle::Ndjson::TestProgress` (kettle-ndjson >= 0.1.24)
43
+
44
+ ### Changed
45
+
46
+ - [kc] kettle-jem/prepare: updated 14 project files:
47
+ - dependencies (14)
48
+
49
+ - [kc] kettle-jem/template: updated 16 project files:
50
+ - code and tests (1)
51
+ - dependencies (3)
52
+ - other (3)
53
+ - workflows (9)
54
+
33
55
  ## [2.0.29] - 2026-10-28
34
56
 
35
57
  - TAG: [v2.0.29][2.0.29t]
@@ -778,7 +800,9 @@ Please file a bug if you notice a violation of semantic versioning.
778
800
  - silent_stream
779
801
  - timecop-rspec
780
802
 
781
- [Unreleased]: https://github.com/kettle-dev/kettle-test/compare/v2.0.29...HEAD
803
+ [Unreleased]: https://github.com/kettle-dev/kettle-test/compare/v2.0.30...HEAD
804
+ [2.0.30]: https://github.com/kettle-dev/kettle-test/compare/v2.0.29...v2.0.30
805
+ [2.0.30t]: https://github.com/kettle-dev/kettle-test/releases/tag/v2.0.30
782
806
  [2.0.29]: https://github.com/kettle-dev/kettle-test/compare/v2.0.28...v2.0.29
783
807
  [2.0.29t]: https://github.com/kettle-dev/kettle-test/releases/tag/v2.0.29
784
808
  [2.0.28]: https://github.com/kettle-dev/kettle-test/compare/v2.0.27...v2.0.28
data/README.md CHANGED
@@ -467,6 +467,34 @@ RSpec.describe("flaky external call", :skip_ci) do
467
467
  end
468
468
  ```
469
469
 
470
+ ### Live test progress events
471
+
472
+ Opt-in, off by default. Set `KETTLE_TEST_EVENTS=1` (also `true`/`yes`/`on`) and
473
+ `kettle/test/rspec` registers `Kettle::Test::ProgressFormatter` on stdout (or pass
474
+ `--format Kettle::Test::ProgressFormatter` yourself). It emits
475
+ [kettle-ndjson](https://github.com/kettle-dev/kettle-ndjson) `test_progress` events, one JSON
476
+ object per line, never one per example. The schema is identical to
477
+ [turbo_tests2](https://github.com/galtzo-floss/turbo_tests2)'s parallel-run events.
478
+ Under turbo_tests2 workers the formatter stays silent; the parent emits.
479
+
480
+ ```json
481
+ {"kind":"tick","source":"kettle-test","examples":120,"failures":1,"pending":2,"elapsed":8.31,"type":"test_progress","event_version":1}
482
+ {"kind":"failure","source":"kettle-test","examples":57,"failures":1,"pending":0,"elapsed":4.02,"location":"./spec/a_spec.rb:3","description":"A fails","type":"test_progress","event_version":1}
483
+ ```
484
+
485
+ | Field | Meaning |
486
+ | --- | --- |
487
+ | `type` | always `test_progress` |
488
+ | `event_version` | `1` |
489
+ | `kind` | `tick` (throttled, at most 1/s), `failure` (immediate, one per failed example), `final` (once, at end) |
490
+ | `source` | `kettle-test` (turbo_tests2 emits `turbo_tests2`) |
491
+ | `examples`, `failures`, `pending` | running totals |
492
+ | `elapsed` | seconds since the run started (float) |
493
+ | `location`, `description` | `failure` only: example location and full description |
494
+
495
+ `KETTLE_TEST_EVENTS_INTERVAL` (seconds, default `1`) tunes the tick throttle. Each event is
496
+ preceded by a newline so it starts on its own line even amid progress dots.
497
+
470
498
  ### Profile slowest examples
471
499
 
472
500
  Set KETTLE_TEST_RSPEC_PROFILE_EXAMPLES to a positive integer to enable RSpec profiling.
@@ -775,7 +803,7 @@ Thanks for RTFM. ☺️
775
803
  [📌gitmoji]: https://gitmoji.dev
776
804
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
777
805
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
778
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.095-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
806
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.118-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
779
807
  [🔐security]: https://github.com/kettle-dev/kettle-test/blob/main/SECURITY.md
780
808
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
781
809
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Opt-in live test_progress events: KETTLE_TEST_EVENTS=1 registers the formatter
4
+ # on stdout. Skipped inside turbo_tests2 workers (the parent process emits).
5
+ require_relative "../../../progress_formatter"
6
+
7
+ # Exercised in a real rspec subprocess by spec/kettle/test/progress_formatter_spec.rb,
8
+ # which in-process coverage cannot see.
9
+ # simplecov:disable
10
+ if Kettle::Test::ProgressFormatter.enabled? && !Kettle::Test::ProgressFormatter.turbo_worker?
11
+ RSpec.configure do |config|
12
+ config.add_formatter(Kettle::Test::ProgressFormatter, $stdout)
13
+ end
14
+ end
15
+ # simplecov:enable
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "kettle/ndjson"
4
+ require "rspec/core"
5
+ require "rspec/core/formatters"
6
+
7
+ module Kettle
8
+ module Test
9
+ # Plain-rspec formatter emitting throttled NDJSON `test_progress` events
10
+ # (the same schema turbo_tests2 emits for parallel runs; see README
11
+ # "Live test progress events"). A thin adapter over Kettle::Ndjson::TestProgress.
12
+ #
13
+ # Opt-in: set KETTLE_TEST_EVENTS=1 (auto-registered by kettle/test/rspec),
14
+ # or pass `--format Kettle::Test::ProgressFormatter` explicitly.
15
+ class ProgressFormatter
16
+ ::RSpec::Core::Formatters.register(self, :example_passed, :example_pending, :example_failed, :close)
17
+
18
+ def self.enabled?(env = ENV)
19
+ Kettle::Ndjson::TestProgress.enabled?(env)
20
+ end
21
+
22
+ # Workers spawned by turbo_tests2 must not emit; the parent aggregates.
23
+ def self.turbo_worker?(env = ENV)
24
+ env.key?("RSPEC_FORMATTER_OUTPUT_ID")
25
+ end
26
+
27
+ def initialize(output, progress: nil)
28
+ @progress = progress || Kettle::Ndjson::TestProgress.new(
29
+ io: output,
30
+ source: "kettle-test",
31
+ interval: Kettle::Ndjson::TestProgress.interval_from_env
32
+ )
33
+ end
34
+
35
+ def example_passed(_notification)
36
+ @progress.record(:passed)
37
+ end
38
+
39
+ def example_pending(_notification)
40
+ @progress.record(:pending)
41
+ end
42
+
43
+ def example_failed(notification)
44
+ example = notification.example
45
+ @progress.record(:failed, location: example.location, description: example.full_description)
46
+ end
47
+
48
+ def close(_notification)
49
+ @progress.finish
50
+ end
51
+ end
52
+ end
53
+ end
@@ -5,7 +5,7 @@ module Kettle
5
5
  # Version namespace for this gem.
6
6
  module Version
7
7
  # Current gem version.
8
- VERSION = "2.0.29"
8
+ VERSION = "2.0.30"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  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: kettle-test
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.29
4
+ version: 2.0.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -71,6 +71,26 @@ dependencies:
71
71
  - - "~>"
72
72
  - !ruby/object:Gem::Version
73
73
  version: '3.0'
74
+ - !ruby/object:Gem::Dependency
75
+ name: kettle-ndjson
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '0.1'
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 0.1.24
84
+ type: :runtime
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '0.1'
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: 0.1.24
74
94
  - !ruby/object:Gem::Dependency
75
95
  name: rspec
76
96
  requirement: !ruby/object:Gem::Requirement
@@ -148,7 +168,7 @@ dependencies:
148
168
  version: '1.0'
149
169
  - - ">="
150
170
  - !ruby/object:Gem::Version
151
- version: 1.0.17
171
+ version: 1.0.18
152
172
  type: :runtime
153
173
  prerelease: false
154
174
  version_requirements: !ruby/object:Gem::Requirement
@@ -158,7 +178,7 @@ dependencies:
158
178
  version: '1.0'
159
179
  - - ">="
160
180
  - !ruby/object:Gem::Version
161
- version: 1.0.17
181
+ version: 1.0.18
162
182
  - !ruby/object:Gem::Dependency
163
183
  name: silent_stream
164
184
  requirement: !ruby/object:Gem::Requirement
@@ -205,14 +225,14 @@ dependencies:
205
225
  requirements:
206
226
  - - ">="
207
227
  - !ruby/object:Gem::Version
208
- version: 3.1.12
228
+ version: 4.0.2
209
229
  type: :runtime
210
230
  prerelease: false
211
231
  version_requirements: !ruby/object:Gem::Requirement
212
232
  requirements:
213
233
  - - ">="
214
234
  - !ruby/object:Gem::Version
215
- version: 3.1.12
235
+ version: 4.0.2
216
236
  - !ruby/object:Gem::Dependency
217
237
  name: version_gem
218
238
  requirement: !ruby/object:Gem::Requirement
@@ -242,7 +262,7 @@ dependencies:
242
262
  version: '3.1'
243
263
  - - ">="
244
264
  - !ruby/object:Gem::Version
245
- version: 3.1.25
265
+ version: 3.1.28
246
266
  type: :development
247
267
  prerelease: false
248
268
  version_requirements: !ruby/object:Gem::Requirement
@@ -252,7 +272,7 @@ dependencies:
252
272
  version: '3.1'
253
273
  - - ">="
254
274
  - !ruby/object:Gem::Version
255
- version: 3.1.25
275
+ version: 3.1.28
256
276
  - !ruby/object:Gem::Dependency
257
277
  name: bundler-audit
258
278
  requirement: !ruby/object:Gem::Requirement
@@ -344,7 +364,7 @@ dependencies:
344
364
  version: '1.0'
345
365
  - - ">="
346
366
  - !ruby/object:Gem::Version
347
- version: 1.0.9
367
+ version: 1.0.10
348
368
  type: :development
349
369
  prerelease: false
350
370
  version_requirements: !ruby/object:Gem::Requirement
@@ -354,7 +374,7 @@ dependencies:
354
374
  version: '1.0'
355
375
  - - ">="
356
376
  - !ruby/object:Gem::Version
357
- version: 1.0.9
377
+ version: 1.0.10
358
378
  - !ruby/object:Gem::Dependency
359
379
  name: gitmoji-regex
360
380
  requirement: !ruby/object:Gem::Requirement
@@ -364,7 +384,7 @@ dependencies:
364
384
  version: '2.0'
365
385
  - - ">="
366
386
  - !ruby/object:Gem::Version
367
- version: 2.0.15
387
+ version: 2.0.16
368
388
  type: :development
369
389
  prerelease: false
370
390
  version_requirements: !ruby/object:Gem::Requirement
@@ -374,7 +394,7 @@ dependencies:
374
394
  version: '2.0'
375
395
  - - ">="
376
396
  - !ruby/object:Gem::Version
377
- version: 2.0.15
397
+ version: 2.0.16
378
398
  description: "\U0001F372 Kettle::Test is a meta tool from kettle-dev to streamline
379
399
  testing. Acts as a shim dependency, pulling in many other dependencies, to give
380
400
  you OOTB productivity with a RubyGem, or Ruby app project. Configures RSpec w/ syntactic
@@ -400,6 +420,7 @@ files:
400
420
  - lib/kettle/test/config/ext/timecop.rb
401
421
  - lib/kettle/test/config/int/rspec/rspec_core.rb
402
422
  - lib/kettle/test/config/int/rspec/silent_stream.rb
423
+ - lib/kettle/test/config/int/rspec/test_events.rb
403
424
  - lib/kettle/test/config/int/rspec/timecop_rspec.rb
404
425
  - lib/kettle/test/config/int/rspec_block_is_expected.rb
405
426
  - lib/kettle/test/config/int/rspec_pending_for.rb
@@ -407,6 +428,7 @@ files:
407
428
  - lib/kettle/test/external.rb
408
429
  - lib/kettle/test/internal.rb
409
430
  - lib/kettle/test/mocks/test_task.rake
431
+ - lib/kettle/test/progress_formatter.rb
410
432
  - lib/kettle/test/rspec.rb
411
433
  - lib/kettle/test/support/shared_contexts/with_rake.rb
412
434
  - lib/kettle/test/version.rb
@@ -418,10 +440,10 @@ licenses:
418
440
  - PolyForm-Small-Business-1.0.0
419
441
  metadata:
420
442
  homepage_uri: https://kettle-test.galtzo.com
421
- source_code_uri: https://github.com/kettle-dev/kettle-test/tree/v2.0.29
422
- changelog_uri: https://github.com/kettle-dev/kettle-test/blob/v2.0.29/CHANGELOG.md
443
+ source_code_uri: https://github.com/kettle-dev/kettle-test/tree/v2.0.30
444
+ changelog_uri: https://github.com/kettle-dev/kettle-test/blob/v2.0.30/CHANGELOG.md
423
445
  bug_tracker_uri: https://github.com/kettle-dev/kettle-test/issues
424
- documentation_uri: https://www.rubydoc.info/gems/kettle-test/2.0.29
446
+ documentation_uri: https://www.rubydoc.info/gems/kettle-test/2.0.30
425
447
  funding_uri: https://github.com/sponsors/pboling
426
448
  wiki_uri: https://github.com/kettle-dev/kettle-test/wiki
427
449
  news_uri: https://www.railsbling.com/tags/kettle-test
@@ -451,7 +473,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
451
473
  - !ruby/object:Gem::Version
452
474
  version: '0'
453
475
  requirements: []
454
- rubygems_version: 4.0.20
476
+ rubygems_version: 4.0.24
455
477
  specification_version: 4
456
478
  summary: "\U0001F372 A kettle-dev meta tool to streamline testing"
457
479
  test_files: []
metadata.gz.sig CHANGED
Binary file