kettle-test 1.0.0 → 1.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: 03420ccfec4e1460ed81074b7f86dbfa0e602b5091f649d201862e05da214aca
4
- data.tar.gz: 3e7a8b7c52b8a801f22ecce6ad904312511e930174c605b87ec25406c78b05d7
3
+ metadata.gz: 3dedf9fc3ee157b690222bb8d32c17126f8d4527ce45688abe8c23c8b0a5f9b8
4
+ data.tar.gz: c587497233fa05ff921d1f2dd1e817e3014c30852408f3377e90d46ad7e51a12
5
5
  SHA512:
6
- metadata.gz: d6e5fd5f2c24dff68a899596bc268ff275713e38752b0dead58b8076c0e61c916b19314539eb9f2535451c4e970ed53ef73cbeb3077b10dc92a6f106772bac55
7
- data.tar.gz: 07136c2c9d2f2b96b36213739b38b53a302364f21cb2365ef19e24004b7ffb7064ca56f03cf6f441c8ba7b6752735dfdd8f1af11a309a72311e13e4daa36c93a
6
+ metadata.gz: ea41b0a34d7792858ffa56968cf3f28783e452a092fa973502bad68c7d45a49f3e545de83c9615cd22d34dd9f75aabdfa8f16ec47418b3760ad701456e8b4e1f
7
+ data.tar.gz: 762f890c922878af0806deacbf86d5f26f5214b2b724c0412ec78da10ece3f113d17a0aed1fda9ac035c2a06e1d751fa5739d493e3f1f9a6295d079d382b0487
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -1,8 +1,20 @@
1
1
  # Changelog
2
+
3
+ [![SemVer 2.0.0][📌semver-img]][📌semver] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog]
4
+
2
5
  All notable changes to this project will be documented in this file.
3
6
 
4
- The format is based on [Keep a Changelog v1](https://keepachangelog.com/en/1.0.0/),
5
- and this project adheres to [Semantic Versioning v2](https://semver.org/spec/v2.0.0.html).
7
+ The format is based on [Keep a Changelog][📗keep-changelog],
8
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
9
+ and [yes][📌major-versions-not-sacred], platform and engine support are part of the [public API][📌semver-breaking].
10
+ Please file a bug if you notice a violation of semantic versioning.
11
+
12
+ [📌semver]: https://semver.org/spec/v2.0.0.html
13
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-FFDD67.svg?style=flat
14
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
15
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
16
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
17
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat
6
18
 
7
19
  ## [Unreleased]
8
20
  ### Added
@@ -12,7 +24,31 @@ and this project adheres to [Semantic Versioning v2](https://semver.org/spec/v2.
12
24
  ### Fixed
13
25
  ### Security
14
26
 
15
- ## [1.0.0] - 2025-08-20
27
+ ## [1.0.2] - 2025-08-29
28
+ - TAG: [v1.0.2][1.0.2t]
29
+ - COVERAGE: 100.00% -- 81/81 lines in 13 files
30
+ - BRANCH COVERAGE: 100.00% -- 2/2 branches in 13 files
31
+ - 94.44% documented
32
+ ### Removed
33
+ - checksums from packaged gem
34
+ ### Fixed
35
+ - gem packaged without checksums
36
+ - can't be in the packaged gem, since they would change the checksum of the gem itself
37
+ ### Security
38
+ - corrected checksums for the next release (not packaged, only tracked in VCS)
39
+
40
+ ## [1.0.1] - 2025-08-29
41
+ - TAG: [v1.0.1][1.0.1t]
42
+ - COVERAGE: 100.00% -- 81/81 lines in 13 files
43
+ - BRANCH COVERAGE: 100.00% -- 2/2 branches in 13 files
44
+ - 94.44% documented
45
+ ### Added
46
+ - RSpec shared context: "with rake"
47
+ ### Fixed
48
+ - Typos in README.md
49
+ - Typos in CHANGELOG.md
50
+
51
+ ## [1.0.0] - 2025-08-22
16
52
  - TAG: [v1.0.0][1.0.0t]
17
53
  - COVERAGE: 100.00% -- 69/69 lines in 13 files
18
54
  - BRANCH COVERAGE: 100.00% -- 2/2 branches in 13 files
@@ -25,6 +61,10 @@ and this project adheres to [Semantic Versioning v2](https://semver.org/spec/v2.
25
61
  - silent_stream
26
62
  - timecop-rspec
27
63
 
28
- [Unreleased]: https://gitlab.com/kettle-rb/kettle-test/-/compare/v1.0.0...HEAD
29
- [1.0.0]: https://gitlab.com/kettle-rb/kettle-test/-/compare/baed02cf1ca1e0e8c75c11fd188edaf1a4f5f08b...v1.0.0
30
- [1.0.0t]: https://gitlab.com/kettle-rb/kettle-test/-/tags/v1.0.0
64
+ [Unreleased]: https://github.com/kettle-rb/kettle-test/compare/v1.0.2...HEAD
65
+ [1.0.0]: https://github.com/kettle-rb/kettle-test/compare/baed02cf1ca1e0e8c75c11fd188edaf1a4f5f08b...v1.0.0
66
+ [1.0.0t]: https://github.com/kettle-rb/kettle-test/releases/tag/v1.0.0
67
+ [1.0.1]: https://github.com/kettle-rb/kettle-test/compare/v1.0.0...v1.0.1
68
+ [1.0.1t]: https://github.com/kettle-rb/kettle-test/releases/tag/v1.0.1
69
+ [1.0.2]: https://github.com/kettle-rb/kettle-test/compare/v1.0.1...v1.0.2
70
+ [1.0.2t]: https://github.com/kettle-rb/kettle-test/releases/tag/v1.0.2
data/CONTRIBUTING.md CHANGED
@@ -22,6 +22,42 @@ Follow these instructions:
22
22
  6. Make sure to add tests for it. This is important, so it doesn't break in a future release.
23
23
  7. Create new Pull Request.
24
24
 
25
+ ## Environment Variables for Local Development
26
+
27
+ Below are the primary environment variables recognized by stone_checksums (and its integrated tools). Unless otherwise noted, set boolean values to the string "true" to enable.
28
+
29
+ General/runtime
30
+ - DEBUG: Enable extra internal logging for this library (default: false)
31
+ - REQUIRE_BENCH: Enable `require_bench` to profile requires (default: false)
32
+ - CI: When set to true, adjusts default rake tasks toward CI behavior
33
+
34
+ Coverage (kettle-soup-cover / SimpleCov)
35
+ - K_SOUP_COV_DO: Enable coverage collection (default: true in .envrc)
36
+ - K_SOUP_COV_FORMATTERS: Comma-separated list of formatters (html, xml, rcov, lcov, json, tty)
37
+ - K_SOUP_COV_MIN_LINE: Minimum line coverage threshold (integer, e.g., 100)
38
+ - K_SOUP_COV_MIN_BRANCH: Minimum branch coverage threshold (integer, e.g., 100)
39
+ - K_SOUP_COV_MIN_HARD: Fail the run if thresholds are not met (true/false)
40
+ - K_SOUP_COV_MULTI_FORMATTERS: Enable multiple formatters at once (true/false)
41
+ - K_SOUP_COV_OPEN_BIN: Path to browser opener for HTML (empty disables auto-open)
42
+ - MAX_ROWS: Limit console output rows for simplecov-console (e.g., 1)
43
+ Tip: When running a single spec file locally, you may want `K_SOUP_COV_MIN_HARD=false` to avoid failing thresholds for a partial run.
44
+
45
+ GitHub API and CI helpers
46
+ - GITHUB_TOKEN or GH_TOKEN: Token used by `ci:act` and release workflow checks to query GitHub Actions status at higher rate limits
47
+
48
+ Releasing and signing
49
+ - SKIP_GEM_SIGNING: If set, skip gem signing during build/release
50
+ - GEM_CERT_USER: Username for selecting your public cert in `certs/<USER>.pem` (defaults to $USER)
51
+ - SOURCE_DATE_EPOCH: Reproducible build timestamp. `kettle-release` will set this automatically for the session.
52
+
53
+ Git hooks and commit message helpers (exe/kettle-commit-msg)
54
+ - GIT_HOOK_BRANCH_VALIDATE: Branch name validation mode (e.g., `jira`) or `false` to disable
55
+ - GIT_HOOK_FOOTER_APPEND: Append a footer to commit messages when goalie allows (true/false)
56
+ - GIT_HOOK_FOOTER_SENTINEL: Required when footer append is enabled — a unique first-line sentinel to prevent duplicates
57
+ - GIT_HOOK_FOOTER_APPEND_DEBUG: Extra debug output in the footer template (true/false)
58
+
59
+ For a quick starting point, this repository’s `.envrc` shows sane defaults, and `.env.local` can override them locally.
60
+
25
61
  ## Appraisals
26
62
 
27
63
  From time to time the Appraisal2 gemfiles in `gemfiles/` will need to be updated.
@@ -51,6 +87,12 @@ To run all tests
51
87
  bundle exec rake test
52
88
  ```
53
89
 
90
+ ### Spec organization (required)
91
+
92
+ - For each class or module under `lib/`, keep all of its unit tests in a single spec file under `spec/` that mirrors the path and file name (e.g., specs for `lib/kettle/dev/release_cli.rb` live in `spec/kettle/dev/release_cli_spec.rb`).
93
+ - Do not create ad-hoc "_more" or split spec files for the same class/module. Consolidate all unit tests into the main spec file for that class/module.
94
+ - Only integration scenarios that intentionally span multiple classes belong in `spec/integration/`.
95
+
54
96
  ## Lint It
55
97
 
56
98
  Run all the default tasks, which includes running the gradually autocorrecting linter, `rubocop-gradual`.
@@ -102,6 +144,12 @@ NOTE: To build without signing the gem you must set `SKIP_GEM_SIGNING` to some v
102
144
 
103
145
  ### To release a new version:
104
146
 
147
+ #### Automated process
148
+
149
+ Run `bundle exec kettle-release`.
150
+
151
+ #### Manual process
152
+
105
153
  1. Run `bin/setup && bin/rake` as a "test, coverage, & linting" sanity check
106
154
  2. Update the version number in `version.rb`, and ensure `CHANGELOG.md` reflects changes
107
155
  3. Run `bin/setup && bin/rake` again as a secondary check, and to update `Gemfile.lock`
@@ -111,7 +159,8 @@ NOTE: To build without signing the gem you must set `SKIP_GEM_SIGNING` to some v
111
159
  6. Run `export GIT_TRUNK_BRANCH_NAME="$(git remote show origin | grep 'HEAD branch' | cut -d ' ' -f5)" && echo $GIT_TRUNK_BRANCH_NAME`
112
160
  7. Run `git checkout $GIT_TRUNK_BRANCH_NAME`
113
161
  8. Run `git pull origin $GIT_TRUNK_BRANCH_NAME` to ensure latest trunk code
114
- 9. Set `SOURCE_DATE_EPOCH` so `rake build` and `rake release` use same timestamp, and generate same checksums
162
+ 9. Optional for older Bundler (< 2.7.0): Set `SOURCE_DATE_EPOCH` so `rake build` and `rake release` use the same timestamp and generate the same checksums
163
+ - If your Bundler is >= 2.7.0, you can skip this; builds are reproducible by default.
115
164
  - Run `export SOURCE_DATE_EPOCH=$EPOCHSECONDS && echo $SOURCE_DATE_EPOCH`
116
165
  - If the echo above has no output, then it didn't work.
117
166
  - Note: `zsh/datetime` module is needed, if running `zsh`.
@@ -121,7 +170,9 @@ NOTE: To build without signing the gem you must set `SKIP_GEM_SIGNING` to some v
121
170
  to create SHA-256 and SHA-512 checksums. This functionality is provided by the `stone_checksums`
122
171
  [gem][💎stone_checksums].
123
172
  - The script automatically commits but does not push the checksums
124
- 12. Run `bundle exec rake release` which will create a git tag for the version,
173
+ 12. Sanity check the SHA256, comparing with the output from the `bin/gem_checksums` command:
174
+ - `sha256sum pkg/<gem name>-<version>.gem`
175
+ 13. Run `bundle exec rake release` which will create a git tag for the version,
125
176
  push git commits and tags, and push the `.gem` file to [rubygems.org][💎rubygems]
126
177
 
127
178
  [🚎src-main]: https://gitlab.com/kettle-rb/kettle-test
data/README.md CHANGED
@@ -7,9 +7,9 @@
7
7
  [🖼️kettle-test-i]: https://logos.galtzo.com/assets/images/kettle-rb/kettle-test/avatar-192px.svg
8
8
  [🖼️kettle-test]: https://github.com/kettle-rb/kettle-test
9
9
 
10
- # ⌚️ Kettle::Test
10
+ # 🍲 Kettle::Test
11
11
 
12
- [![Version][👽versioni]][👽version] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![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 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 Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf] [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf] [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf]
12
+ [![Version][👽versioni]][👽version] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![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 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 Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf] [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf] [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf]
13
13
 
14
14
  If ☝️ `ci_badges.map(&:color).detect { it != "green"}` [let me know][🖼️galtzo-discord], as I may have missed the [discord notification][🖼️galtzo-discord].
15
15
 
@@ -38,17 +38,39 @@ and concordant releases of JRuby, and TruffleRuby.
38
38
 
39
39
  ## 💡 Info you can shake a stick at
40
40
 
41
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
42
+ |-------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
43
+ | Works with JRuby | ![JRuby 9.1 Compat][💎jruby-9.1i] ![JRuby 9.2 Compat][💎jruby-9.2i] ![JRuby 9.3 Compat][💎jruby-9.3i] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎10-j-wf] [![JRuby 10.0 Compat][💎jruby-c-i]][🚎11-c-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf] |
44
+ | Works with Truffle Ruby | ![Truffle Ruby 22.3 Compat][💎truby-22.3i] ![Truffle Ruby 23.0 Compat][💎truby-23.0i] <br/> [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎9-t-wf] [![Truffle Ruby 24.1 Compat][💎truby-c-i]][🚎11-c-wf] |
45
+ | Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎4-lg-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎6-s-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎6-s-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎6-s-wf] [![Ruby 3.4 Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf] |
46
+ | Works with MRI Ruby 2 | [![Ruby 2.3 Compat][💎ruby-2.3i]][🚎1-an-wf] [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎1-an-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎1-an-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎7-us-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] |
47
+ | Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
48
+ | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![Wiki][📜wiki-img]][📜wiki] |
49
+ | Compliance | [![License: MIT][📄license-img]][📄license-ref] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
50
+ | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
51
+ | Support | [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
52
+ | Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
53
+ | `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] |
54
+
55
+ ### Compatibility
56
+
57
+ Compatible with Ruby 2.3+, and concordant releases of JRuby, and TruffleRuby.
58
+
59
+ | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 |
60
+ |------------------------------------------------|-------------------------------------------------------------------------------------|
61
+ | 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
62
+
41
63
  ### Federated DVCS
42
64
 
43
65
  <details>
44
66
  <summary>Find this repo on other forges (Coming soon!)</summary>
45
67
 
46
- | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
47
- |-------------------------------------------------------|-------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
68
+ | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
69
+ |-------------------------------------------------|-------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
48
70
  | 🧪 [kettle-rb/kettle-test on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜wiki] | 🏀 Tiny Matrix | ➖ |
49
71
  | 🧊 [kettle-rb/kettle-test on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
50
- | 🐙 [kettle-rb/kettle-test on GitHub][📜src-gh] | A Dirty Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | ➖ | 💯 Full Matrix | [💚][gh-discussions] |
51
- | 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
72
+ | 🐙 [kettle-rb/kettle-test on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | ➖ | 💯 Full Matrix | [💚][gh-discussions] |
73
+ | 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
52
74
 
53
75
  </details>
54
76
 
@@ -61,7 +83,7 @@ and concordant releases of JRuby, and TruffleRuby.
61
83
 
62
84
  [![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]
63
85
 
64
- - 💡Subscribe for support guarantees covering _all_ FLOSS dependencies
86
+ - 💡Subscribe for support guarantees covering _all_ your FLOSS dependencies
65
87
  - 💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]
66
88
  - 💡Tidelift pays maintainers to maintain the software you depend on!<br/>📊`@`Pointy Haired Boss: An [enterprise support][🏙️entsup-tidelift] subscription is "[never gonna let you down][🧮kloc]", and *supports* open source maintainers
67
89
 
@@ -73,30 +95,19 @@ Alternatively:
73
95
 
74
96
  </details>
75
97
 
76
- | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
77
- |-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
78
- | Works with JRuby | ![JRuby 9.1 Compat][💎jruby-9.1i] ![JRuby 9.2 Compat][💎jruby-9.2i] ![JRuby 9.3 Compat][💎jruby-9.3i] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎10-j-wf] [![JRuby 10.0 Compat][💎jruby-c-i]][🚎11-c-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf] |
79
- | Works with Truffle Ruby | ![Truffle Ruby 22.3 Compat][💎truby-22.3i] <br/> [![Truffle Ruby 23.0 Compat][💎truby-23.0i]][🚎9-t-wf] [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎9-t-wf] [![Truffle Ruby 24.1 Compat][💎truby-c-i]][🚎11-c-wf] |
80
- | Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎4-lg-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎6-s-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎6-s-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎6-s-wf] [![Ruby 3.4 Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf] |
81
- | Works with MRI Ruby 2 | ![Ruby 2.0 Compat][💎ruby-2.0i] ![Ruby 2.1 Compat][💎ruby-2.1i] ![Ruby 2.2 Compat][💎ruby-2.2i] <br/> [![Ruby 2.3 Compat][💎ruby-2.3i]][🚎1-an-wf] [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎1-an-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎1-an-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎7-us-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] |
82
- | Works with MRI Ruby 1 | ![Ruby 1.9 Compat][💎ruby-1.9i] |
83
- | Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
84
- | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![Wiki][📜wiki-img]][📜wiki] |
85
- | Compliance | [![License: MIT][📄license-img]][📄license-ref] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
86
- | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
87
- | Support | [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
88
- | Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
89
- | `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] |
90
-
91
98
  ## ✨ Installation
92
99
 
93
100
  Install the gem and add to the application's Gemfile by executing:
94
101
 
95
- $ bundle add kettle-test
102
+ ```console
103
+ bundle add kettle-test
104
+ ```
96
105
 
97
106
  If bundler is not being used to manage dependencies, install the gem by executing:
98
107
 
99
- $ gem install kettle-test
108
+ ```console
109
+ gem install kettle-test
110
+ ```
100
111
 
101
112
  ### 🔒 Secure Installation
102
113
 
@@ -240,6 +251,26 @@ end
240
251
 
241
252
  ## 🔧 Basic Usage
242
253
 
254
+ ### Shared Context "with rake"
255
+
256
+ Make sure to require "rake" before you require "kettle/test" (or "kettle/dev" since it will require this library).
257
+
258
+ If you do the shared context will be available to use in your specs automatically.
259
+
260
+ ```ruby
261
+ include_context "with rake", "demo" do
262
+ let(:tmp_rakelib) do
263
+ Dir.mktmpdir("with_rake_spec_")
264
+ end
265
+ let(:task_dir) { tmp_rakelib }
266
+ let(:rakelib) { tmp_rakelib }
267
+ # Provide args for the rake task invocation
268
+ let(:task_args) { ["Bob"] }
269
+ end
270
+ ```
271
+
272
+ See the spec for a more complete example: See for more details: [with_rake_spec.rb](spec/kettle/text/support/shared_contexts/with_rake_spec.rb)
273
+
243
274
  ### RSpec Time Machine Tags :freeze and :travel
244
275
 
245
276
  Timecop.travel/freeze any RSpec (describe|context|example) with
@@ -348,6 +379,45 @@ KETTLE_TEST_FULL_BACKTRACE=true bundle exec rspec
348
379
 
349
380
  ## 🦷 FLOSS Funding
350
381
 
382
+ While kettle-rb tools are free software and will always be, the project would benefit immensely from some funding.
383
+ Raising a monthly budget of... "dollars" would make the project more sustainable.
384
+
385
+ We welcome both individual and corporate sponsors! We also offer a
386
+ wide array of funding channels to account for your preferences
387
+ (although currently [Open Collective][🖇osc] is our preferred funding platform).
388
+
389
+ **If you're working in a company that's making significant use of kettle-rb tools we'd
390
+ appreciate it if you suggest to your company to become a kettle-rb sponsor.**
391
+
392
+ You can support the development of kettle-rb tools via
393
+ [GitHub Sponsors][🖇sponsor],
394
+ [Liberapay][⛳liberapay],
395
+ [PayPal][🖇paypal],
396
+ [Open Collective][🖇osc]
397
+ and [Tidelift][🏙️entsup-tidelift].
398
+
399
+ | 📍 NOTE |
400
+ |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
401
+ | If doing a sponsorship in the form of donation is problematic for your company <br/> from an accounting standpoint, we'd recommend the use of Tidelift, <br/> where you can get a support-like subscription instead. |
402
+
403
+ ### Open Collective for Individuals
404
+
405
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:START -->
406
+ No backers yet. Be the first!
407
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:END -->
408
+
409
+ Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/kettle-rb#backer)]
410
+
411
+ ### Open Collective for Organizations
412
+
413
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:START -->
414
+ No sponsors yet. Be the first!
415
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
416
+
417
+ Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/kettle-rb#sponsor)]
418
+
419
+ ### Another way to support open-source
420
+
351
421
  > How wonderful it is that nobody need wait a single moment before starting to improve the world.<br/>
352
422
  >—Anne Frank
353
423
 
@@ -381,7 +451,7 @@ See [CONTRIBUTING.md][🤝contributing].
381
451
 
382
452
  ### Code Coverage
383
453
 
384
- [![Coverage Graph][🔑codecov-g♻️]][🔑codecov]
454
+ [![Coverage Graph][🔑codecov-g]][🔑codecov]
385
455
 
386
456
  [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls]
387
457
 
@@ -438,7 +508,7 @@ spec.add_dependency("kettle-test", "~> 1.0")
438
508
  <details>
439
509
  <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
440
510
 
441
- SemVer should, but doesn't explicitly, say that dropping support for specific Platforms
511
+ SemVer should, IMO, but doesn't explicitly, say that dropping support for specific Platforms
442
512
  is a *breaking change* to an API.
443
513
  It is obvious to many, but not all, and since the spec is silent, the bike shedding is endless.
444
514
 
@@ -461,7 +531,7 @@ See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright
461
531
 
462
532
  <ul>
463
533
  <li>
464
- Copyright (c) 2025 Peter H. Boling, of
534
+ Copyright (c) 2023, 2025 Peter H. Boling, of
465
535
  <a href="https://discord.gg/3qme4XHNKN">
466
536
  Galtzo.com
467
537
  <picture>
@@ -469,7 +539,6 @@ See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright
469
539
  </picture>
470
540
  </a>, and kettle-test contributors.
471
541
  </li>
472
- <li>Copyright (c) 2014-2017 Zach Taylor & Avant</li>
473
542
  </ul>
474
543
 
475
544
  ## 🤑 A request for help
@@ -478,10 +547,10 @@ Maintainers have teeth, and need to pay their dentists.
478
547
  After getting laid off in an RIF in March, and filled with many dozens of rejections,
479
548
  I'm now spending ~80 hours a week building open source tools.
480
549
  I'm hoping to be able to pay for my kids' health insurance this month,
481
- so if you value the work I am doing, please help.
482
- I need your support. Please consider sponsoring me.
550
+ so if you value the work I am doing, I need your support.
551
+ Please consider sponsoring me or the project.
483
552
 
484
- [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay-img] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal-img]
553
+ [![Sponsor kettle-rb/kettle-test on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay-img] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal-img]
485
554
 
486
555
  To say "thanks for maintaining such a great tool" 👇️ Join the Discord or ☝️ send money.
487
556
 
@@ -489,11 +558,20 @@ To join the community or get help 👇️ Join the Discord.
489
558
 
490
559
  [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite]
491
560
 
561
+ ### Please give the project a star ⭐ ♥.
562
+
492
563
  Thanks for RTFM. ☺️
493
564
 
494
565
  [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611
495
566
  [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
496
567
  [⛳liberapay]: https://liberapay.com/pboling/donate
568
+ [🖇osc-all-img]: https://img.shields.io/opencollective/all/kettle-rb
569
+ [🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/kettle-rb
570
+ [🖇osc-backers-img]: https://img.shields.io/opencollective/backers/kettle-rb
571
+ [🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/kettle-rb?style=for-the-badge
572
+ [🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/kettle-rb?style=for-the-badge
573
+ [🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/kettle-rb?style=for-the-badge
574
+ [🖇osc]: https://opencollective.com/kettle-rb
497
575
  [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
498
576
  [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
499
577
  [🖇sponsor]: https://github.com/sponsors/pboling
@@ -516,9 +594,9 @@ Thanks for RTFM. ☺️
516
594
 
517
595
  [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
518
596
  [⛳️gem-namespace]: https://github.com/kettle-rb/kettle-test
519
- [⛳️namespace-img]: https://img.shields.io/badge/namespace-Timecop%3A%3ARspec-3C2D2D.svg?style=square&logo=ruby&logoColor=white
597
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-Kettle%3A%3ATest-3C2D2D.svg?style=square&logo=ruby&logoColor=white
520
598
  [⛳️gem-name]: https://rubygems.org/gems/kettle-test
521
- [⛳️name-img]: https://img.shields.io/badge/name-timecop--rspec-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
599
+ [⛳️name-img]: https://img.shields.io/badge/name-kettle--test-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
522
600
  [🚂maint-blog]: http://www.railsbling.com/tags/kettle-test
523
601
  [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
524
602
  [🚂maint-contact]: http://www.railsbling.com/contact
@@ -547,7 +625,7 @@ Thanks for RTFM. ☺️
547
625
  [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
548
626
  [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
549
627
  [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
550
- [🏙️entsup-tidelift]: https://tidelift.com/subscription
628
+ [🏙️entsup-tidelift]: https://tidelift.com/subscription/pkg/rubygems-kettle-test?utm_source=rubygems-kettle-test&utm_medium=referral&utm_campaign=readme
551
629
  [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
552
630
  [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
553
631
  [💁🏼‍♂️peterboling]: http://www.peterboling.com
@@ -573,7 +651,7 @@ Thanks for RTFM. ☺️
573
651
  [🔑qlty-cov]: https://qlty.sh/gh/kettle-rb/projects/kettle-test/metrics/code?sort=coverageRating
574
652
  [🔑qlty-covi]: https://qlty.sh/gh/kettle-rb/projects/kettle-test/coverage.svg
575
653
  [🔑codecov]: https://codecov.io/gh/kettle-rb/kettle-test
576
- [🔑codecovi♻️]: https://codecov.io/gh/kettle-rb/kettle-test/graph/badge.svg?token=4YOMR0SJRI
654
+ [🔑codecovi]: https://codecov.io/gh/kettle-rb/kettle-test/graph/badge.svg
577
655
  [🔑coveralls]: https://coveralls.io/github/kettle-rb/kettle-test?branch=main
578
656
  [🔑coveralls-img]: https://coveralls.io/repos/github/kettle-rb/kettle-test/badge.svg?branch=main
579
657
  [🖐codeQL]: https://github.com/kettle-rb/kettle-test/security/code-scanning
@@ -604,10 +682,6 @@ Thanks for RTFM. ☺️
604
682
  [🚎13-🔒️-wfi]: https://github.com/kettle-rb/kettle-test/actions/workflows/locked_deps.yml/badge.svg
605
683
  [🚎14-🔓️-wf]: https://github.com/kettle-rb/kettle-test/actions/workflows/unlocked_deps.yml
606
684
  [🚎14-🔓️-wfi]: https://github.com/kettle-rb/kettle-test/actions/workflows/unlocked_deps.yml/badge.svg
607
- [💎ruby-1.9i]: https://img.shields.io/badge/Ruby-1.9_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
608
- [💎ruby-2.0i]: https://img.shields.io/badge/Ruby-2.0_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
609
- [💎ruby-2.1i]: https://img.shields.io/badge/Ruby-2.1_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
610
- [💎ruby-2.2i]: https://img.shields.io/badge/Ruby-2.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
611
685
  [💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
612
686
  [💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
613
687
  [💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
@@ -620,7 +694,7 @@ Thanks for RTFM. ☺️
620
694
  [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
621
695
  [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
622
696
  [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=pink
623
- [💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
697
+ [💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=pink
624
698
  [💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
625
699
  [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
626
700
  [💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
@@ -638,7 +712,7 @@ Thanks for RTFM. ☺️
638
712
  [🤝cb-pulls]: https://codeberg.org/kettle-rb/kettle-test/pulls
639
713
  [🤝cb-donate]: https://donate.codeberg.org/
640
714
  [🤝contributing]: CONTRIBUTING.md
641
- [🔑codecov-g♻️]: https://codecov.io/gh/kettle-rb/kettle-test/graphs/tree.svg?token=4YOMR0SJRI
715
+ [🔑codecov-g]: https://codecov.io/gh/kettle-rb/kettle-test/graphs/tree.svg
642
716
  [🖐contrib-rocks]: https://contrib.rocks
643
717
  [🖐contributors]: https://github.com/kettle-rb/kettle-test/graphs/contributors
644
718
  [🖐contributors-img]: https://contrib.rocks/image?repo=kettle-rb/kettle-test
@@ -656,7 +730,7 @@ Thanks for RTFM. ☺️
656
730
  [📌gitmoji]:https://gitmoji.dev
657
731
  [📌gitmoji-img]:https://img.shields.io/badge/gitmoji_commits-%20😜%20😍-34495e.svg?style=flat-square
658
732
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
659
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.069-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
733
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.081-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
660
734
  [🔐security]: SECURITY.md
661
735
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
662
736
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # already required in external.rb
4
+
3
5
  RSpec.configure do |config|
4
6
  config.include_context("with stubbed env")
5
7
  end
@@ -1,5 +1,10 @@
1
- require "silent_stream"
1
+ # frozen_string_literal: true
2
+
3
+ # already required in external.rb
2
4
 
3
5
  RSpec.configure do |config|
6
+ # RSpec ships with a standard solution.
7
+ # See: https://www.rubydoc.info/gems/rspec-expectations/RSpec%2FMatchers:output
8
+ # But it has limitations, so the old non-threadsafe approach of SilentStream is still useful.
4
9
  config.include(SilentStream)
5
10
  end
@@ -1,4 +1,6 @@
1
- require "timecop"
1
+ # frozen_string_literal: true
2
+
3
+ # already required in external.rb
2
4
 
3
5
  # NOTE: Instead of using Timecop directly, prefer to use the utilities provided by Timecop::Rspec.
4
6
  # See spec/support/config/timecop_rspec.rb
@@ -1,11 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RSpec.configure do |config|
4
- # RSpec ships with a standard solution.
5
- # See: https://www.rubydoc.info/gems/rspec-expectations/RSpec%2FMatchers:output
6
- # But it has limitations, so the old non-threadsafe approach of SilentStream is still useful.
7
- config.include(SilentStream)
8
-
9
4
  config.around do |example|
10
5
  # Allow tests to run normally when debugging or tagged with check_output
11
6
  if Kettle::Test::DEBUG || example.metadata[:check_output]
@@ -1,5 +1,3 @@
1
- require "timecop/rspec"
2
-
3
1
  # Ensure a consistent time for all tests
4
2
  #
5
3
  # Integrates timecop-rspec and provides metadata-based time travel/freeze.
@@ -22,6 +22,7 @@ require "rspec/stubbed_env"
22
22
  require "rspec/block_is_expected" # Usage: see https://github.com/galtzo-floss/rspec-block_is_expected#example
23
23
  require "rspec_junit_formatter"
24
24
  require "silent_stream"
25
+ require "timecop/rspec"
25
26
 
26
27
  # Configs of external libraries
27
28
  require_relative "config/version_gem"
@@ -5,3 +5,9 @@ require_relative "external"
5
5
  require "kettle/test"
6
6
 
7
7
  require_relative "internal"
8
+
9
+ # A gem's test harness should do require "rake" if it is their dependency,
10
+ # and they define a rake task they want to test.
11
+ # :nocov:
12
+ require_relative "support/shared_contexts/with_rake" if defined?(Rake)
13
+ # :nocov:
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable RSpec/MultipleMemoizedHelpers
4
+
5
+ # Inspired by: https://thoughtbot.com/blog/test-rake-tasks-like-a-boss
6
+ # This version doesn't require a Rails app!
7
+ # This file will only be required if Rake is defined
8
+ # require "rake"
9
+
10
+ # Usage:
11
+ # include_context "with rake", "demo" do
12
+ # let(:tmp_rakelib) do
13
+ # Dir.mktmpdir("with_rake_spec_")
14
+ # end
15
+ # # Required by the shared context (override the raising defaults)
16
+ # let(:task_dir) { tmp_rakelib }
17
+ # let(:rakelib) { tmp_rakelib }
18
+ # # Provide args for the rake task invocation
19
+ # let(:task_args) { ["Bob"] }
20
+ # end
21
+ #
22
+ # See for more details: spec/kettle/text/support/shared_contexts/with_rake_spec.rb
23
+ #
24
+ RSpec.shared_context("with rake") do |task_base_name|
25
+ let(:rake_app) { Rake::Application.new }
26
+ let(:task_name) { self.class.top_level_description.sub(/\Arake /, "") }
27
+ # A gem depending on this gem, and using this shared context must define task_dir
28
+ # let(:task_dir) { "lib/gem_checksums/rakelib" }
29
+ let(:task_dir) { raise ArgumentError, "define task_dir in the block of `include_context 'with rake', basename do ... end`" }
30
+ let(:task_args) { [] }
31
+ let(:invoke) { rake_task.invoke(*task_args) }
32
+ # A gem depending on this gem, and using this shared context must define rakelib
33
+ # let(:rakelib) { File.join(__dir__, "..", "..", "..", task_dir) }
34
+ let(:rakelib) { raise ArgumentError, "define rakelib in the block of `include_context 'with rake', basename do ... end`" }
35
+ let(:rake_task) { Rake::Task[task_name] }
36
+
37
+ include_context "with stubbed env"
38
+
39
+ def loaded_files_excluding_current_rake_file(task_base_name)
40
+ $".reject { |file| file == File.join(rakelib, "#{task_base_name}.rake").to_s }
41
+ end
42
+
43
+ before do
44
+ Rake.application = rake_app
45
+ Rake.application.rake_require(task_base_name, [rakelib], loaded_files_excluding_current_rake_file(task_base_name))
46
+ end
47
+ end
48
+ # rubocop:enable RSpec/MultipleMemoizedHelpers
@@ -6,7 +6,7 @@ module Kettle
6
6
  module Version
7
7
  # The current version of kettle-test.
8
8
  # @return [String]
9
- VERSION = "1.0.0"
9
+ VERSION = "1.0.2"
10
10
  end
11
11
  end
12
12
  end
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: 1.0.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -35,7 +35,7 @@ cert_chain:
35
35
  DVjBtqT23eugOqQ73umLcYDZkc36vnqGxUBSsXrzY9pzV5gGr2I8YUxMqf6ATrZt
36
36
  L9nRqA==
37
37
  -----END CERTIFICATE-----
38
- date: 2025-08-22 00:00:00.000000000 Z
38
+ date: 1980-01-02 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: version_gem
@@ -180,67 +180,19 @@ dependencies:
180
180
  - !ruby/object:Gem::Version
181
181
  version: 1.0.3
182
182
  - !ruby/object:Gem::Dependency
183
- name: bundler-audit
183
+ name: kettle-dev
184
184
  requirement: !ruby/object:Gem::Requirement
185
185
  requirements:
186
186
  - - "~>"
187
187
  - !ruby/object:Gem::Version
188
- version: 0.9.2
188
+ version: 1.0.17
189
189
  type: :development
190
190
  prerelease: false
191
191
  version_requirements: !ruby/object:Gem::Requirement
192
192
  requirements:
193
193
  - - "~>"
194
194
  - !ruby/object:Gem::Version
195
- version: 0.9.2
196
- - !ruby/object:Gem::Dependency
197
- name: stone_checksums
198
- requirement: !ruby/object:Gem::Requirement
199
- requirements:
200
- - - "~>"
201
- - !ruby/object:Gem::Version
202
- version: '1.0'
203
- type: :development
204
- prerelease: false
205
- version_requirements: !ruby/object:Gem::Requirement
206
- requirements:
207
- - - "~>"
208
- - !ruby/object:Gem::Version
209
- version: '1.0'
210
- - !ruby/object:Gem::Dependency
211
- name: gitmoji-regex
212
- requirement: !ruby/object:Gem::Requirement
213
- requirements:
214
- - - "~>"
215
- - !ruby/object:Gem::Version
216
- version: '1.0'
217
- - - ">="
218
- - !ruby/object:Gem::Version
219
- version: 1.0.3
220
- type: :development
221
- prerelease: false
222
- version_requirements: !ruby/object:Gem::Requirement
223
- requirements:
224
- - - "~>"
225
- - !ruby/object:Gem::Version
226
- version: '1.0'
227
- - - ">="
228
- - !ruby/object:Gem::Version
229
- version: 1.0.3
230
- - !ruby/object:Gem::Dependency
231
- name: rake
232
- requirement: !ruby/object:Gem::Requirement
233
- requirements:
234
- - - "~>"
235
- - !ruby/object:Gem::Version
236
- version: '13.0'
237
- type: :development
238
- prerelease: false
239
- version_requirements: !ruby/object:Gem::Requirement
240
- requirements:
241
- - - "~>"
242
- - !ruby/object:Gem::Version
243
- version: '13.0'
195
+ version: 1.0.17
244
196
  description: "\U0001F372 Kettle::Test is a meta tool from kettle-rb to streamline
245
197
  testing. Acts as a shim dependency, pulling in many other dependencies, to give
246
198
  you OOTB productivity with a RubyGem, or Ruby app project. Configures RSpec w/ syntactic
@@ -261,9 +213,6 @@ extra_rdoc_files:
261
213
  - REEK
262
214
  - RUBOCOP.md
263
215
  - SECURITY.md
264
- - checksums/kettle-test-1.0.0.gem.sha256
265
- - checksums/kettle-test-1.0.0.gem.sha512
266
- - sig/kettle/test.rbs
267
216
  files:
268
217
  - CHANGELOG.md
269
218
  - CITATION.cff
@@ -274,8 +223,6 @@ files:
274
223
  - REEK
275
224
  - RUBOCOP.md
276
225
  - SECURITY.md
277
- - checksums/kettle-test-1.0.0.gem.sha256
278
- - checksums/kettle-test-1.0.0.gem.sha512
279
226
  - lib/kettle/test.rb
280
227
  - lib/kettle/test/config/ext/rspec/rspec_stubbed_env.rb
281
228
  - lib/kettle/test/config/ext/rspec/silent_stream.rb
@@ -288,6 +235,7 @@ files:
288
235
  - lib/kettle/test/external.rb
289
236
  - lib/kettle/test/internal.rb
290
237
  - lib/kettle/test/rspec.rb
238
+ - lib/kettle/test/support/shared_contexts/with_rake.rb
291
239
  - lib/kettle/test/version.rb
292
240
  - sig/kettle/test.rbs
293
241
  homepage: https://github.com/kettle-rb/kettle-test
@@ -295,10 +243,10 @@ licenses:
295
243
  - MIT
296
244
  metadata:
297
245
  homepage_uri: https://kettle-test.galtzo.com/
298
- source_code_uri: https://github.com/kettle-rb/kettle-test/tree/v1.0.0
299
- changelog_uri: https://github.com/kettle-rb/kettle-test/blob/v1.0.0/CHANGELOG.md
246
+ source_code_uri: https://github.com/kettle-rb/kettle-test/tree/v1.0.2
247
+ changelog_uri: https://github.com/kettle-rb/kettle-test/blob/v1.0.2/CHANGELOG.md
300
248
  bug_tracker_uri: https://github.com/kettle-rb/kettle-test/issues
301
- documentation_uri: https://www.rubydoc.info/gems/kettle-test/1.0.0
249
+ documentation_uri: https://www.rubydoc.info/gems/kettle-test/1.0.2
302
250
  funding_uri: https://github.com/sponsors/pboling
303
251
  wiki_uri: https://github.com/kettle-rb/kettle-test/wiki
304
252
  news_uri: https://www.railsbling.com/tags/kettle-test
@@ -308,18 +256,9 @@ rdoc_options:
308
256
  - "--title"
309
257
  - "kettle-test - \U0001F372 A kettle-rb meta tool to streamline testing"
310
258
  - "--main"
311
- - checksums/**/*.sha256
312
- - checksums/**/*.sha512
313
- - sig/**/*.rbs
314
- - CHANGELOG.md
315
- - CITATION.cff
316
- - CODE_OF_CONDUCT.md
317
- - CONTRIBUTING.md
318
- - LICENSE.txt
319
259
  - README.md
320
- - REEK
321
- - RUBOCOP.md
322
- - SECURITY.md
260
+ - "--exclude"
261
+ - "^sig/"
323
262
  - "--line-numbers"
324
263
  - "--inline-source"
325
264
  - "--quiet"
metadata.gz.sig CHANGED
Binary file
@@ -1 +0,0 @@
1
- 9e529e9db55bdb257b7e16929e09a2704c7453cc3ed4811ed48aa6a681b3a634
@@ -1 +0,0 @@
1
- 8968cc13a3547f3a36a24ff8e307a66b4bc6f6c317db9e9677f4a8f0f5f22648ae7d563f4eb5617580987f45817c2efa96e253dc55e38c1dde20a90f4377e9fc