kettle-test 1.0.0 → 1.0.1
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 +31 -6
- data/CONTRIBUTING.md +53 -2
- data/README.md +116 -42
- data/checksums/kettle-test-1.0.1.gem.sha256 +1 -0
- data/checksums/kettle-test-1.0.1.gem.sha512 +1 -0
- data/lib/kettle/test/config/ext/rspec/rspec_stubbed_env.rb +2 -0
- data/lib/kettle/test/config/ext/rspec/silent_stream.rb +6 -1
- data/lib/kettle/test/config/ext/timecop.rb +3 -1
- data/lib/kettle/test/config/int/rspec/silent_stream.rb +0 -5
- data/lib/kettle/test/config/int/rspec/timecop_rspec.rb +0 -2
- data/lib/kettle/test/external.rb +1 -0
- data/lib/kettle/test/rspec.rb +6 -0
- data/lib/kettle/test/support/shared_contexts/with_rake.rb +48 -0
- data/lib/kettle/test/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +13 -56
- 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: a096bfd53de3e1e6adbd34805064ec04b223d769d6c66e834e5eafa8d1e7117d
|
4
|
+
data.tar.gz: 91cb7f4ee9f5c7acd993d668da35a9a6cd30445d23723deafad67f14e90f1fb4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e25a7399482f66a210d76efa466b13b32dadbdb29ee54b53d4c75d1ebf903678a33eef8b0bbb3bf951630a4b531c6079b713032415d0c26aaebae8e71b6a442
|
7
|
+
data.tar.gz: d64627de06f92f0de76d2f2789d29bc4098cfb2a971c8593a60172a5296611fd229336e89b8ceb12c9ad97c3a5c115c89725822a64636ec9396f4584c4a1ba8a
|
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
|
5
|
-
and this project adheres to [Semantic Versioning
|
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,18 @@ and this project adheres to [Semantic Versioning v2](https://semver.org/spec/v2.
|
|
12
24
|
### Fixed
|
13
25
|
### Security
|
14
26
|
|
15
|
-
## [1.0.
|
27
|
+
## [1.0.1] - 2025-08-29
|
28
|
+
- TAG: [v1.0.1][1.0.1t]
|
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
|
+
### Added
|
33
|
+
- RSpec shared context: "with rake"
|
34
|
+
### Fixed
|
35
|
+
- Typos in README.md
|
36
|
+
- Typos in CHANGELOG.md
|
37
|
+
|
38
|
+
## [1.0.0] - 2025-08-22
|
16
39
|
- TAG: [v1.0.0][1.0.0t]
|
17
40
|
- COVERAGE: 100.00% -- 69/69 lines in 13 files
|
18
41
|
- BRANCH COVERAGE: 100.00% -- 2/2 branches in 13 files
|
@@ -25,6 +48,8 @@ and this project adheres to [Semantic Versioning v2](https://semver.org/spec/v2.
|
|
25
48
|
- silent_stream
|
26
49
|
- timecop-rspec
|
27
50
|
|
28
|
-
[Unreleased]: https://
|
29
|
-
[1.0.0]: https://
|
30
|
-
[1.0.0t]: https://
|
51
|
+
[Unreleased]: https://github.com/kettle-rb/kettle-test/compare/v1.0.1...HEAD
|
52
|
+
[1.0.0]: https://github.com/kettle-rb/kettle-test/compare/baed02cf1ca1e0e8c75c11fd188edaf1a4f5f08b...v1.0.0
|
53
|
+
[1.0.0t]: https://github.com/kettle-rb/kettle-test/releases/tag/v1.0.0
|
54
|
+
[1.0.1]: https://github.com/kettle-rb/kettle-test/compare/v1.0.0...v1.0.1
|
55
|
+
[1.0.1t]: https://github.com/kettle-rb/kettle-test/releases/tag/v1.0.1
|
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
|
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.
|
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
|
-
#
|
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
|
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
|
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] |
|
51
|
-
| 🎮️ [Discord Server][✉️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
|
-
|
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
|
-
|
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
|
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,
|
482
|
-
|
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-
|
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-
|
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
|
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.
|
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
|
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.
|
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
|
@@ -0,0 +1 @@
|
|
1
|
+
c941b3abea572469f905de06c3f7ed99456f8cead2c5d742f570fb4aa8fd8f64
|
@@ -0,0 +1 @@
|
|
1
|
+
4de4121c075e87d2b472a6abc0a7fbab5f34e53eb0b56ab650db29b950c7478925b4b00af17323bdcd1fc66896993ecf3d0cc4013d0ca90e391da4915c16ca4c
|
@@ -1,5 +1,10 @@
|
|
1
|
-
|
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,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]
|
data/lib/kettle/test/external.rb
CHANGED
@@ -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"
|
data/lib/kettle/test/rspec.rb
CHANGED
@@ -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
|
data/lib/kettle/test/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: kettle-test
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
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:
|
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:
|
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.
|
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.
|
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
|
@@ -263,6 +215,8 @@ extra_rdoc_files:
|
|
263
215
|
- SECURITY.md
|
264
216
|
- checksums/kettle-test-1.0.0.gem.sha256
|
265
217
|
- checksums/kettle-test-1.0.0.gem.sha512
|
218
|
+
- checksums/kettle-test-1.0.1.gem.sha256
|
219
|
+
- checksums/kettle-test-1.0.1.gem.sha512
|
266
220
|
- sig/kettle/test.rbs
|
267
221
|
files:
|
268
222
|
- CHANGELOG.md
|
@@ -276,6 +230,8 @@ files:
|
|
276
230
|
- SECURITY.md
|
277
231
|
- checksums/kettle-test-1.0.0.gem.sha256
|
278
232
|
- checksums/kettle-test-1.0.0.gem.sha512
|
233
|
+
- checksums/kettle-test-1.0.1.gem.sha256
|
234
|
+
- checksums/kettle-test-1.0.1.gem.sha512
|
279
235
|
- lib/kettle/test.rb
|
280
236
|
- lib/kettle/test/config/ext/rspec/rspec_stubbed_env.rb
|
281
237
|
- lib/kettle/test/config/ext/rspec/silent_stream.rb
|
@@ -288,6 +244,7 @@ files:
|
|
288
244
|
- lib/kettle/test/external.rb
|
289
245
|
- lib/kettle/test/internal.rb
|
290
246
|
- lib/kettle/test/rspec.rb
|
247
|
+
- lib/kettle/test/support/shared_contexts/with_rake.rb
|
291
248
|
- lib/kettle/test/version.rb
|
292
249
|
- sig/kettle/test.rbs
|
293
250
|
homepage: https://github.com/kettle-rb/kettle-test
|
@@ -295,10 +252,10 @@ licenses:
|
|
295
252
|
- MIT
|
296
253
|
metadata:
|
297
254
|
homepage_uri: https://kettle-test.galtzo.com/
|
298
|
-
source_code_uri: https://github.com/kettle-rb/kettle-test/tree/v1.0.
|
299
|
-
changelog_uri: https://github.com/kettle-rb/kettle-test/blob/v1.0.
|
255
|
+
source_code_uri: https://github.com/kettle-rb/kettle-test/tree/v1.0.1
|
256
|
+
changelog_uri: https://github.com/kettle-rb/kettle-test/blob/v1.0.1/CHANGELOG.md
|
300
257
|
bug_tracker_uri: https://github.com/kettle-rb/kettle-test/issues
|
301
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-test/1.0.
|
258
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-test/1.0.1
|
302
259
|
funding_uri: https://github.com/sponsors/pboling
|
303
260
|
wiki_uri: https://github.com/kettle-rb/kettle-test/wiki
|
304
261
|
news_uri: https://www.railsbling.com/tags/kettle-test
|
metadata.gz.sig
CHANGED
Binary file
|