kettle-test 2.0.1 → 2.0.2

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: 29bb20818a80f275c15b25bef0078baca3d702d7a37e192c58ef9b5cf6363f07
4
- data.tar.gz: 9c57bdc7c6fe26a0c2f2889c07c1575042cfeb1eb4bf378669551d84d01c453f
3
+ metadata.gz: 6e49bb99b463b7e54e6dfb292a94651737aa8fab7bea6ae8c944d0bde946f68f
4
+ data.tar.gz: '0860f573c33a3a576c9bdb75d63c71ed76efe1183ab749f4c66d5798ad325208'
5
5
  SHA512:
6
- metadata.gz: 82aa8c0ce12527b49efc55f43ee3d6354ef14b0839b0bc234ef20779c6a6cb780ad536793fbc86229940f44671d288d43bdc902dcb64d336530bd54d7a6f20ba
7
- data.tar.gz: de92fabfcfc30947573b6b68ce1818794256d565a06149e2b69d57e7b7327b9f45b474c039c2f0228641cebb5ebb755887178a7b06ebc3fc7062b94b3982b941
6
+ metadata.gz: 807c6a6eeb21e7ff5a6c8cdd5314bcb4a33cc1dd16e0071f6104e435bb19b189af1f17243533255b12ed7a1ba90f17a513c5935a0be39235f5ba294f0d7c14ff
7
+ data.tar.gz: 7c54752858ec41862fd60d1f743e0cd905c38158faf17ffc0da58a2a422b36be001904da92d4756e07eab9e0db3e63bfe419ea787790b2c276c0d78a7896a3f3
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,26 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [2.0.2] - 2026-06-01
34
+
35
+ - TAG: [v2.0.2][2.0.2t]
36
+ - COVERAGE: 100.00% -- 91/91 lines in 15 files
37
+ - BRANCH COVERAGE: 100.00% -- 2/2 branches in 15 files
38
+ - 90.00% documented
39
+
40
+ ### Changed
41
+
42
+ - Retemplated project files with the current kettle-jem template, including the
43
+ StructuredMerge config migration, generated workflow updates, README logo
44
+ refresh, and updated development dependency floors.
45
+ - Updated the runtime `turbo_tests2` dependency to require v3.1.0 or newer.
46
+
47
+ ### Fixed
48
+
49
+ - `kettle-test` now resolves Appraisal gemfiles under `gemfiles/` back to the
50
+ project root before running specs, so coverage and log artifacts stay under
51
+ root-level `coverage/` and `tmp/` instead of being written inside `gemfiles/`.
52
+
33
53
  ## [2.0.1] - 2026-05-25
34
54
 
35
55
  - TAG: [v2.0.1][2.0.1t]
@@ -256,7 +276,9 @@ Please file a bug if you notice a violation of semantic versioning.
256
276
  - silent_stream
257
277
  - timecop-rspec
258
278
 
259
- [Unreleased]: https://github.com/kettle-rb/kettle-test/compare/v2.0.1...HEAD
279
+ [Unreleased]: https://github.com/kettle-rb/kettle-test/compare/v2.0.2...HEAD
280
+ [2.0.2]: https://github.com/kettle-rb/kettle-test/compare/v2.0.1...v2.0.2
281
+ [2.0.2t]: https://github.com/kettle-rb/kettle-test/releases/tag/v2.0.2
260
282
  [2.0.1]: https://github.com/kettle-rb/kettle-test/compare/v2.0.0...v2.0.1
261
283
  [2.0.1t]: https://github.com/kettle-rb/kettle-test/releases/tag/v2.0.1
262
284
  [2.0.0]: https://github.com/kettle-rb/kettle-test/compare/v1.0.10...v2.0.0
data/CONTRIBUTING.md CHANGED
@@ -102,11 +102,32 @@ Git hooks and commit message helpers (exe/kettle-commit-msg)
102
102
  - GIT_HOOK_FOOTER_SENTINEL: Required when footer append is enabled — a unique first-line sentinel to prevent duplicates
103
103
  - GIT_HOOK_FOOTER_APPEND_DEBUG: Extra debug output in the footer template (true/false)
104
104
 
105
+ Git diff driver setup
106
+ - Local setup writes repository `.gitattributes` entries and local Git `diff.smorg-*` command config so this checkout uses StructuredMerge semantic diffs.
107
+ - Global setup registers `diff.smorg-*` commands once in the user Git config; use it when you work across several StructuredMerge-enabled repositories.
108
+ - Include-file setup writes `.git/smorg/config` and includes it from local Git config, keeping command registrations out of the repository files.
109
+ - Git hosting forges generally ignore external diff drivers, so pull request views may still show raw textual diffs even when local `git diff` uses semantic drivers.
110
+
111
+ ```console
112
+ K_JEM_TEMPLATING=true bundle exec kettle-jem install
113
+ ```
114
+
115
+ Troubleshooting Git diffs
116
+ - Use `git diff --no-ext-diff` to compare against Git's built-in diff output.
117
+ - Use `git diff --no-textconv` when a textconv projection obscures the raw file bytes you need to inspect.
118
+ - If Git reports a missing `smorg-*` executable, rerun `bundle install` and the setup command above, then check `git config --local --get-regexp '^diff\.smorg-'`.
119
+ - To remove managed local entries, run `K_JEM_TEMPLATING=true bundle exec kettle-jem install --undo`; remove global command registrations with `git config --global --unset-all diff.smorg-ruby.command`.
120
+
105
121
  For a quick starting point, this repository’s `mise.toml` defines the shared defaults, and `.env.local` can override them locally. Copy `.env.local.example` to `.env.local`, use `KEY=value` lines, and either activate `mise` in your shell or run commands through `mise exec -C /path/to/project -- ...`.
106
122
 
107
123
  ## Appraisals
108
124
 
109
125
  From time to time the [appraisal2][🚎appraisal2] gemfiles in `gemfiles/` will need to be updated.
126
+ Generated appraisal and CI workflow floors are controlled by `ruby.test_minimum`
127
+ in `.structuredmerge/kettle-jem.yml`; this project was templated with `ruby.test_minimum: 2.4`.
128
+ That value describes the lowest Ruby version expected to run the test/development
129
+ toolchain, and it may be higher than the gemspec runtime floor.
130
+
110
131
  They are created and updated with the commands:
111
132
 
112
133
  ```console
data/README.md CHANGED
@@ -1,17 +1,10 @@
1
- [![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-floss-i]][🖼️galtzo-floss] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![kettle-rb Logo by Aboling0, CC BY-SA 4.0][🖼️kettle-rb-i]][🖼️kettle-rb]
2
-
3
- [🖼️galtzo-floss-i]: https://logos.galtzo.com/assets/images/galtzo-floss/avatar-192px.svg
4
- [🖼️galtzo-floss]: https://discord.gg/3qme4XHNKN
5
- [🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-192px.svg
6
- [🖼️ruby-lang]: https://www.ruby-lang.org/
7
- [🖼️kettle-rb-i]: https://logos.galtzo.com/assets/images/kettle-rb/avatar-192px.svg
8
- [🖼️kettle-rb]: https://github.com/kettle-rb
1
+ <a href="https://github.com/kettle-rb"><img alt="kettle-rb Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/kettle-rb/avatar-128px.svg" width="14%" align="right"/></a>
9
2
 
10
3
  # 🍲 Kettle::Test
11
4
 
12
- [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: AGPL-3.0-only OR PolyForm-Small-Business-1.0.0][📄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] [![CodeQL][🖐codeQL-img]][🖐codeQL]
5
+ [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: AGPL-3.0-only OR PolyForm-Small-Business-1.0.0][📄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]
13
6
 
14
- `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][🖼️galtzo-floss], as I may have missed the [discord notification][🖼️galtzo-floss].
7
+ `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][✉️discord-invite], as I may have missed the [discord notification][✉️discord-invite].
15
8
 
16
9
  ---
17
10
 
@@ -26,7 +19,7 @@ I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-ta
26
19
 
27
20
  </details>
28
21
 
29
- ## 🌻 Synopsis
22
+ ## 🌻 Synopsis <a href="https://discord.gg/3qme4XHNKN"><img alt="Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px.svg" width="8%" align="right"/></a> <a href="https://ruby-toolbox.com"><img alt="ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5" src="https://logos.galtzo.com/assets/images/ruby-lang/avatar-128px.svg" width="8%" align="right"/></a>
30
23
 
31
24
  Add to your `spec/spec_helper.rb`:
32
25
 
@@ -78,6 +71,10 @@ and concordant releases of JRuby, and TruffleRuby.
78
71
  ### Compatibility
79
72
 
80
73
  Compatible with MRI Ruby 2.4.0+, and concordant releases of JRuby, and TruffleRuby.
74
+ CI workflows and Appraisals are generated for MRI Ruby 2.4+.
75
+ This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
76
+ may be higher than the gem's runtime compatibility floor when legacy Rubies are
77
+ not practical for the current toolchain.
81
78
 
82
79
  | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚 |
83
80
  |------------------------------------------------|--------------------------------------------------------|
@@ -404,7 +401,7 @@ RSpec.describe("version-specific behavior") do
404
401
  it "pends for MRI >= 2.6.0 and <= 3.0.0" do
405
402
  pending_for(
406
403
  engine: :ruby,
407
- versions: (Gem::Version.new("2.6.0")..Gem::Version.new("3.0.0")),
404
+ versions: (Gem::Version.new("2.6.0")..Gem::Version.new("3.0.0"))
408
405
  )
409
406
  end
410
407
 
@@ -412,7 +409,7 @@ RSpec.describe("version-specific behavior") do
412
409
  it "skips for MRI >= 3.1.0 and < 3.3.0" do
413
410
  skip_for(
414
411
  engine: :ruby,
415
- versions: (Gem::Version.new("3.1.0")...Gem::Version.new("3.3.0")),
412
+ versions: (Gem::Version.new("3.1.0")...Gem::Version.new("3.3.0"))
416
413
  )
417
414
  end
418
415
 
@@ -435,7 +432,7 @@ RSpec.configure do |config|
435
432
  config.before(:each, :requires_ruby_32) do
436
433
  skip_for(
437
434
  reason: "Requires Ruby >= 3.2",
438
- versions: %w[2.7 3.0 3.1],
435
+ versions: %w[2.7 3.0 3.1]
439
436
  )
440
437
  end
441
438
  end
@@ -603,6 +600,8 @@ To say "thanks!" ☝️ Join the Discord or 👇️ send money.
603
600
 
604
601
  ### Please give the project a star ⭐ ♥.
605
602
 
603
+ Many parts of this project are actively managed by a [kettle-jem](https://github.com/structuredmerge/structuredmerge-ruby/tree/main/gems/kettle-jem) smart template utilizing [StructuredMerge.org](https://structuredmerge.org) merge contracts.
604
+
606
605
  Thanks for RTFM. ☺️
607
606
 
608
607
  [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
@@ -705,8 +704,6 @@ Thanks for RTFM. ☺️
705
704
  [🏀codecovi]: https://codecov.io/gh/kettle-rb/kettle-test/graph/badge.svg
706
705
  [🏀coveralls]: https://coveralls.io/github/kettle-rb/kettle-test?branch=main
707
706
  [🏀coveralls-img]: https://coveralls.io/repos/github/kettle-rb/kettle-test/badge.svg?branch=main
708
- [🖐codeQL]: https://github.com/kettle-rb/kettle-test/security/code-scanning
709
- [🖐codeQL-img]: https://github.com/kettle-rb/kettle-test/actions/workflows/codeql-analysis.yml/badge.svg
710
707
  [🚎ruby-2.4-wf]: https://github.com/kettle-rb/kettle-test/actions/workflows/ruby-2.4.yml
711
708
  [🚎ruby-2.5-wf]: https://github.com/kettle-rb/kettle-test/actions/workflows/ruby-2.5.yml
712
709
  [🚎ruby-2.6-wf]: https://github.com/kettle-rb/kettle-test/actions/workflows/ruby-2.6.yml
@@ -800,6 +797,7 @@ Thanks for RTFM. ☺️
800
797
  [📄license-img]: https://img.shields.io/badge/License-AGPL--3.0--only_OR_PolyForm--Small--Business--1.0.0-259D6C.svg
801
798
  [📄license-compat]: https://www.apache.org/legal/resolved.html#category-x
802
799
  [📄license-compat-img]: https://img.shields.io/badge/Apache_Incompatible:_Category_X-✗-C0392B.svg?style=flat&logo=Apache
800
+
803
801
  [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
804
802
  [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
805
803
  [🚎yard-current]: http://rubydoc.info/gems/kettle-test
data/exe/kettle-test.sh CHANGED
@@ -80,13 +80,33 @@ RESET='\033[0m'
80
80
  hr() { printf '%s\n' "────────────────────────────────────────────────────────────────"; }
81
81
 
82
82
  # ── Project root ──────────────────────────────────────────────────────────────
83
- # When run via `bundle exec`, BUNDLE_GEMFILE points to the project's Gemfile.
84
- # Fall back to the current working directory.
83
+ # When run via `bundle exec`, BUNDLE_GEMFILE can point at an Appraisal gemfile
84
+ # under gemfiles/. Walk upward to the real project root so relative paths such
85
+ # as coverage/ and tmp/ are never anchored under gemfiles/.
86
+
87
+ find_project_root() {
88
+ local dir="$1"
89
+
90
+ dir="$(cd "$dir" && pwd)"
91
+ while [ "$dir" != "/" ]; do
92
+ if compgen -G "$dir/*.gemspec" >/dev/null ||
93
+ [ -f "$dir/Appraisal.root.gemfile" ] ||
94
+ [ -f "$dir/Gemfile" ] ||
95
+ [ -d "$dir/.git" ]; then
96
+ printf '%s\n' "$dir"
97
+ return 0
98
+ fi
99
+
100
+ dir="$(dirname "$dir")"
101
+ done
102
+
103
+ pwd
104
+ }
85
105
 
86
106
  if [ -n "${BUNDLE_GEMFILE:-}" ]; then
87
- PROJECT_ROOT="$(cd "$(dirname "$BUNDLE_GEMFILE")" && pwd)"
107
+ PROJECT_ROOT="$(find_project_root "$(dirname "$BUNDLE_GEMFILE")")"
88
108
  else
89
- PROJECT_ROOT="$(pwd)"
109
+ PROJECT_ROOT="$(find_project_root "$(pwd)")"
90
110
  fi
91
111
 
92
112
  LOG_DIR="$PROJECT_ROOT/tmp/kettle-test"
@@ -3,7 +3,7 @@
3
3
  module Kettle
4
4
  module Test
5
5
  module Version
6
- VERSION = "2.0.1"
6
+ VERSION = "2.0.2"
7
7
  end
8
8
  VERSION = Version::VERSION # Traditional Constant Location
9
9
  end
@@ -6,4 +6,3 @@ module Kettle
6
6
  VERSION: String
7
7
  end
8
8
  end
9
-
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.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -205,14 +205,20 @@ dependencies:
205
205
  requirements:
206
206
  - - "~>"
207
207
  - !ruby/object:Gem::Version
208
- version: '3.0'
208
+ version: '3.1'
209
+ - - ">="
210
+ - !ruby/object:Gem::Version
211
+ version: 3.1.0
209
212
  type: :runtime
210
213
  prerelease: false
211
214
  version_requirements: !ruby/object:Gem::Requirement
212
215
  requirements:
213
216
  - - "~>"
214
217
  - !ruby/object:Gem::Version
215
- version: '3.0'
218
+ version: '3.1'
219
+ - - ">="
220
+ - !ruby/object:Gem::Version
221
+ version: 3.1.0
216
222
  - !ruby/object:Gem::Dependency
217
223
  name: version_gem
218
224
  requirement: !ruby/object:Gem::Requirement
@@ -240,6 +246,9 @@ dependencies:
240
246
  - - "~>"
241
247
  - !ruby/object:Gem::Version
242
248
  version: '2.0'
249
+ - - ">="
250
+ - !ruby/object:Gem::Version
251
+ version: 2.0.6
243
252
  type: :development
244
253
  prerelease: false
245
254
  version_requirements: !ruby/object:Gem::Requirement
@@ -247,6 +256,9 @@ dependencies:
247
256
  - - "~>"
248
257
  - !ruby/object:Gem::Version
249
258
  version: '2.0'
259
+ - - ">="
260
+ - !ruby/object:Gem::Version
261
+ version: 2.0.6
250
262
  - !ruby/object:Gem::Dependency
251
263
  name: bundler-audit
252
264
  requirement: !ruby/object:Gem::Requirement
@@ -295,26 +307,6 @@ dependencies:
295
307
  - - ">="
296
308
  - !ruby/object:Gem::Version
297
309
  version: 1.0.4
298
- - !ruby/object:Gem::Dependency
299
- name: appraisal2
300
- requirement: !ruby/object:Gem::Requirement
301
- requirements:
302
- - - "~>"
303
- - !ruby/object:Gem::Version
304
- version: '3.0'
305
- - - ">="
306
- - !ruby/object:Gem::Version
307
- version: 3.0.6
308
- type: :development
309
- prerelease: false
310
- version_requirements: !ruby/object:Gem::Requirement
311
- requirements:
312
- - - "~>"
313
- - !ruby/object:Gem::Version
314
- version: '3.0'
315
- - - ">="
316
- - !ruby/object:Gem::Version
317
- version: 3.0.6
318
310
  - !ruby/object:Gem::Dependency
319
311
  name: ruby-progressbar
320
312
  requirement: !ruby/object:Gem::Requirement
@@ -355,20 +347,20 @@ dependencies:
355
347
  requirements:
356
348
  - - "~>"
357
349
  - !ruby/object:Gem::Version
358
- version: '1.0'
350
+ version: '2.0'
359
351
  - - ">="
360
352
  - !ruby/object:Gem::Version
361
- version: 1.0.3
353
+ version: 2.0.1
362
354
  type: :development
363
355
  prerelease: false
364
356
  version_requirements: !ruby/object:Gem::Requirement
365
357
  requirements:
366
358
  - - "~>"
367
359
  - !ruby/object:Gem::Version
368
- version: '1.0'
360
+ version: '2.0'
369
361
  - - ">="
370
362
  - !ruby/object:Gem::Version
371
- version: 1.0.3
363
+ version: 2.0.1
372
364
  description: "\U0001F372 Kettle::Test is a meta tool from kettle-rb to streamline
373
365
  testing. Acts as a shim dependency, pulling in many other dependencies, to give
374
366
  you OOTB productivity with a RubyGem, or Ruby app project. Configures RSpec w/ syntactic
@@ -428,10 +420,10 @@ licenses:
428
420
  - PolyForm-Small-Business-1.0.0
429
421
  metadata:
430
422
  homepage_uri: https://kettle-test.galtzo.com
431
- source_code_uri: https://github.com/kettle-rb/kettle-test/tree/v2.0.1
432
- changelog_uri: https://github.com/kettle-rb/kettle-test/blob/v2.0.1/CHANGELOG.md
423
+ source_code_uri: https://github.com/kettle-rb/kettle-test/tree/v2.0.2
424
+ changelog_uri: https://github.com/kettle-rb/kettle-test/blob/v2.0.2/CHANGELOG.md
433
425
  bug_tracker_uri: https://github.com/kettle-rb/kettle-test/issues
434
- documentation_uri: https://www.rubydoc.info/gems/kettle-test/2.0.1
426
+ documentation_uri: https://www.rubydoc.info/gems/kettle-test/2.0.2
435
427
  funding_uri: https://github.com/sponsors/pboling
436
428
  wiki_uri: https://github.com/kettle-rb/kettle-test/wiki
437
429
  news_uri: https://www.railsbling.com/tags/kettle-test
metadata.gz.sig CHANGED
Binary file