kettle-soup-cover 1.0.5 → 1.0.7
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 +42 -1
- data/CONTRIBUTING.md +11 -6
- data/LICENSE.txt +1 -1
- data/README.md +254 -60
- data/SECURITY.md +12 -4
- data/lib/kettle/change.rb +39 -0
- data/lib/kettle/soup/cover/config.rb +10 -10
- data/lib/kettle/soup/cover/constants.rb +113 -0
- data/lib/kettle/soup/cover/filters/gt_line_filter.rb +0 -0
- data/lib/kettle/soup/cover/filters/lt_line_filter.rb +0 -0
- data/lib/kettle/soup/cover/loaders.rb +36 -0
- data/lib/kettle/soup/cover/rakelib/coverage.rake +20 -2
- data/lib/kettle/soup/cover/tasks.rb +0 -0
- data/lib/kettle/soup/cover/version.rb +1 -1
- data/lib/kettle/soup/cover.rb +23 -139
- data/lib/kettle-soup-cover.rb +5 -10
- data/sig/kettle/soup/cover/version.rbs +0 -0
- data/sig/kettle/soup/cover.rbs +1 -1
- data.tar.gz.sig +0 -0
- metadata +73 -42
- 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: a07c0152dda8bd9cce9d4bdd7f76c89f1f50579909017ae7521cad3dfcc8cbad
|
4
|
+
data.tar.gz: 0f6590e962b33dbeac87c0a4895496073bbbd4ad7a8a155e2bd4f68ee32fa0d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a608f3345c2af94017e7825775f9f4b3f9a1bbc11ba477bf170be293998cd73240bf44bf14cb426e1e70051a7f56d6044ce5a9ef608b26b682c6f2ad627ae451
|
7
|
+
data.tar.gz: fc3eaab0ada73e9cbd6773e14a037ce0393e81bb76659d175ed4d1a7cb87e14bc423da4e4d910a001da06666bfc5156600c469ab8bcbc4a643f34dcaa505c8bf
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
@@ -11,6 +11,44 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
11
11
|
### Fixed
|
12
12
|
### Removed
|
13
13
|
|
14
|
+
## [1.0.7] - 2025-05-20
|
15
|
+
### Added
|
16
|
+
- Document usage with minitest
|
17
|
+
- Document usage with https://github.com/irongut/CodeCoverageSummary
|
18
|
+
- Document usage with https://github.com/marocchino/sticky-pull-request-comment
|
19
|
+
- More documentation improvements
|
20
|
+
- Link to Discord
|
21
|
+
### Changed
|
22
|
+
- Gem build: Don't check for cert if SKIP_GEM_SIGNING is set
|
23
|
+
- Allows linux packaging systems to build gem without signing via rubygems
|
24
|
+
- Update homepage in gemspec
|
25
|
+
- Improved loading of version.rb in gemspec
|
26
|
+
|
27
|
+
## [1.0.6] - 2025-05-04
|
28
|
+
- COVERAGE: 93.43% -- 128/137 lines in 10 files
|
29
|
+
- BRANCH COVERAGE: 50.00% -- 16/32 branches in 10 files
|
30
|
+
- 11.11% documented
|
31
|
+
### Added
|
32
|
+
- Support for linux, and other OSes, in `coverage` rake task
|
33
|
+
- previously was macOS only (would raise error on other OSes)
|
34
|
+
- ✨ `Kettle::Soup::Cover::OPEN_BIN`
|
35
|
+
- Set `export K_SOUP_COV_OPEN_BIN=open` to use macOS' `open` command in `coverage` task
|
36
|
+
- Set `export K_SOUP_COV_OPEN_BIN=xdg-open` to use Linux' `xdg-open` command in `coverage` task
|
37
|
+
- Set `export K_SOUP_COV_OPEN_BIN=` to just print the path to the HTML coverage report in `coverage` task
|
38
|
+
- Test coverage increased from 55 => 93 for lines
|
39
|
+
- Test coverage increased from 25 => 50 for branches
|
40
|
+
### Changed
|
41
|
+
- Refactored internals in ways that should not affect public APIs
|
42
|
+
- allows much greater test coverage
|
43
|
+
- report a bug if anything breaks!
|
44
|
+
- Going forward all releases will be signed by my key that expires 2045-04-29
|
45
|
+
### Fixed
|
46
|
+
- require hooks such that both work equally well:
|
47
|
+
- `require "kettle/soup/cover"`
|
48
|
+
- `require "kettle-soup-cover"`
|
49
|
+
- Allow unsigned gem builds (for linux distros)
|
50
|
+
- In the ENV set `SKIP_GEM_SIGNING` to any value
|
51
|
+
|
14
52
|
## [1.0.5] - 2025-04-03
|
15
53
|
### Added
|
16
54
|
- Documentation
|
@@ -80,7 +118,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
80
118
|
## [0.1.0] - 2023-10-17
|
81
119
|
- Initial release
|
82
120
|
|
83
|
-
[Unreleased]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/compare/v1.0.
|
121
|
+
[Unreleased]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/compare/v1.0.7...HEAD
|
122
|
+
[1.0.7]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/compare/v1.0.6...v1.0.7
|
123
|
+
[1.0.6]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/compare/v1.0.5...v1.0.6
|
124
|
+
[1.0.5]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/compare/v1.0.4...v1.0.5
|
84
125
|
[1.0.4]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/compare/v1.0.3...v1.0.4
|
85
126
|
[1.0.3]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/compare/v1.0.2...v1.0.3
|
86
127
|
[1.0.2]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/compare/v1.0.1...v1.0.2
|
data/CONTRIBUTING.md
CHANGED
@@ -67,11 +67,14 @@ Also see GitLab Contributors: [https://gitlab.com/kettle-rb/kettle-soup-cover/-/
|
|
67
67
|
|
68
68
|
### One-time, Per-maintainer, Setup
|
69
69
|
|
70
|
-
**IMPORTANT**:
|
71
|
-
|
72
|
-
|
70
|
+
**IMPORTANT**: If you want to sign the build you create,
|
71
|
+
your public key for signing gems will need to be picked up by the line in the
|
72
|
+
`gemspec` defining the `spec.cert_chain` (check the relevant ENV variables there).
|
73
|
+
All releases to RubyGems.org will be signed.
|
73
74
|
See: [RubyGems Security Guide][🔒️rubygems-security-guide]
|
74
75
|
|
76
|
+
NOTE: To build without signing the gem you must set `SKIP_GEM_SIGNING` to some value in your environment.
|
77
|
+
|
75
78
|
### To release a new version:
|
76
79
|
|
77
80
|
1. Run `bin/setup && bin/rake` as a tests, coverage, & linting sanity check
|
@@ -87,10 +90,11 @@ See: [RubyGems Security Guide][🔒️rubygems-security-guide]
|
|
87
90
|
- Run `export SOURCE_DATE_EPOCH=$EPOCHSECONDS && echo $SOURCE_DATE_EPOCH`
|
88
91
|
- If the echo above has no output, then it didn't work.
|
89
92
|
- Note that you'll need the `zsh/datetime` module, if running `zsh`.
|
90
|
-
- In `bash` you can use `date +%s` instead, i.e. `export SOURCE_DATE_EPOCH=$(date +%s) && echo $SOURCE_DATE_EPOCH`
|
93
|
+
- In older versions of `bash` you can use `date +%s` instead, i.e. `export SOURCE_DATE_EPOCH=$(date +%s) && echo $SOURCE_DATE_EPOCH`
|
91
94
|
10. Run `bundle exec rake build`
|
92
|
-
11. Run `bin/gem_checksums` (more context [1][🔒️rubygems-checksums-pr]
|
93
|
-
to create SHA-256 and SHA-512 checksums
|
95
|
+
11. Run `bin/gem_checksums` (more context [1][🔒️rubygems-checksums-pr], [2][🔒️rubygems-guides-pr])
|
96
|
+
to create SHA-256 and SHA-512 checksums. This functionality is provided by the `stone_checksums`
|
97
|
+
[gem][💎stone_checksums].
|
94
98
|
- Checksums will be committed automatically by the script, but not pushed
|
95
99
|
12. Run `bundle exec rake release` which will create a git tag for the version,
|
96
100
|
push git commits and tags, and push the `.gem` file to [rubygems.org][💎rubygems]
|
@@ -106,5 +110,6 @@ See: [RubyGems Security Guide][🔒️rubygems-security-guide]
|
|
106
110
|
[🔒️rubygems-security-guide]: https://guides.rubygems.org/security/#building-gems
|
107
111
|
[🔒️rubygems-checksums-pr]: https://github.com/rubygems/rubygems/pull/6022
|
108
112
|
[🔒️rubygems-guides-pr]: https://github.com/rubygems/guides/pull/325
|
113
|
+
[💎stone_checksums]: https://github.com/pboling/stone_checksums
|
109
114
|
[📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
|
110
115
|
[📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat
|
data/LICENSE.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) 2023 - 2025 Peter Boling (railsbling.com)
|
3
|
+
Copyright (c) 2023 - 2025 Peter H. Boling (railsbling.com)
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
</a>
|
5
5
|
</p>
|
6
6
|
|
7
|
-
# Kettle::Soup::Cover
|
7
|
+
# 🥘 Kettle::Soup::Cover
|
8
8
|
|
9
9
|
[![Version][👽versioni]][👽version]
|
10
10
|
[![License: MIT][📄license-img]][📄license-ref]
|
@@ -13,8 +13,8 @@
|
|
13
13
|
[![Depfu][🔑depfui♻️]][🔑depfu]
|
14
14
|
[![CodeCov Test Coverage][🔑codecovi♻️]][🔑codecov]
|
15
15
|
[![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls]
|
16
|
-
[![
|
17
|
-
[![Maintainability][🔑
|
16
|
+
[![QLTY Test Coverage][🔑qlty-covi♻️]][🔑qlty-cov]
|
17
|
+
[![QLTY Maintainability][🔑qlty-mnti♻️]][🔑qlty-mnt]
|
18
18
|
[![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf]
|
19
19
|
[![CI Current][🚎11-c-wfi]][🚎11-c-wf]
|
20
20
|
[![CI Supported][🚎6-s-wfi]][🚎6-s-wf]
|
@@ -22,28 +22,44 @@
|
|
22
22
|
[![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf]
|
23
23
|
[![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf]
|
24
24
|
[![CI Style][🚎5-st-wfi]][🚎5-st-wf]
|
25
|
+
[![CodeQL][🖐codeQL-img]][🖐codeQL]
|
25
26
|
|
26
27
|
---
|
27
28
|
|
28
|
-
[![Liberapay
|
29
|
+
[![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay]
|
29
30
|
[![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor]
|
30
31
|
[![Buy me a coffee][🖇buyme-small-img]][🖇buyme]
|
31
|
-
[![Polar
|
32
|
+
[![Donate on Polar][🖇polar-img]][🖇polar]
|
32
33
|
[![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
|
33
34
|
[![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon]
|
34
35
|
|
35
|
-
|
36
|
+
Four lines of code to get a configured, curated, opinionated, set of dependencies for Test Coverage, and that's *including* the two lines for `require "simplecov"`, and `SimpleCov.start`.
|
36
37
|
|
37
|
-
|
38
|
-
|
38
|
+
Configured for what? To work out of the box on every CI*. Batteries included.
|
39
|
+
For apps and libraries. Any test framework. Many code coverage related GitHub Actions (example configs [1](#marocchinosticky-pull-request-comment), [2](#irongutcodecoveragesummary)).
|
40
|
+
|
41
|
+
| Test Framework | Helper | Config |
|
42
|
+
|----------------|-----------------------------|-------------------------------|
|
43
|
+
| MiniTest | [test helper][mini-helper] | [.simplecov][mini-simplecov] |
|
44
|
+
| RSpec | [spec helper][rpsec-helper] | [.simplecov][rspec-simplecov] |
|
45
|
+
|
46
|
+
[mini-helper]: https://github.com/pboling/silent_stream/blob/master/tests/test_silent_stream.rb
|
47
|
+
[mini-simplecov]: https://github.com/pboling/silent_stream/blob/master/.simplecov
|
48
|
+
[rpsec-helper]: https://github.com/oauth-xx/oauth2/blob/main/spec/spec_helper.rb
|
49
|
+
[rspec-simplecov]: https://github.com/oauth-xx/oauth2/blob/main/.simplecov
|
39
50
|
|
40
|
-
|
51
|
+
| Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
|
52
|
+
|--------------------------------------------------------|-------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
|
53
|
+
| 🧪 [kettle-rb/kettle-soup-cover on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜wiki] | 🏀 Tiny Matrix | ➖ |
|
54
|
+
| 🧊 [kettle-rb/kettle-soup-cover on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | ➖ | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
|
55
|
+
| 🐙 [kettle-rb/kettle-soup-cover on GitHub][📜src-gh] | A Dirty Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | ➖ | 💯 Full Matrix | ➖ |
|
56
|
+
| 🎮️ [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] |
|
41
57
|
|
42
58
|
One of the major benefits of using this library is not having to figure
|
43
59
|
out how to get multiple coverage output formats working. I did that for you,
|
44
60
|
and I got all of them working, at the same time together, or al la carte. Kum-ba-ya.
|
45
61
|
|
46
|
-
A quick shot of
|
62
|
+
A quick shot of 12-factor coverage power, straight to your brain:
|
47
63
|
|
48
64
|
```shell
|
49
65
|
export K_SOUP_COV_DO=true # Means you want code coverage
|
@@ -54,23 +70,74 @@ export K_SOUP_COV_MIN_LINE=69 # Means you want to enforce X% line coverage
|
|
54
70
|
export MAX_ROWS=5 # Setting for simplecov-console gem for tty output, limits to the worst N rows of bad coverage
|
55
71
|
```
|
56
72
|
|
57
|
-
I hope I've piqued your interest.
|
73
|
+
I hope I've piqued your interest enough to give it a ⭐️ if the forge you are on supports it.
|
74
|
+
|
75
|
+
<details>
|
76
|
+
<summary>What does the name mean?</summary>
|
77
|
+
|
78
|
+
A Covered Kettle of SOUP (Software of Unknown Provenance)
|
79
|
+
|
80
|
+
The name is derived in part from the medical devices field,
|
81
|
+
where this library is considered a package of [SOUP](https://en.wikipedia.org/wiki/Software_of_unknown_pedigree).
|
82
|
+
|
83
|
+
</details>
|
84
|
+
|
85
|
+
## Format / Library x CI Matrix
|
86
|
+
|
87
|
+
This tool leverages other tools to make hard things easier, but sometimes those other tools break...
|
88
|
+
I'll try to track that here.
|
89
|
+
|
90
|
+
| Format | Library | Status | Web | Circle<br/>CI | Git<br/>Lab | Travis<br/>CI | Jenkins<br/>X | Jenkins | Hudson | Semaphore | Bit<br/>Bucket | Team<br/>City | 🤓<br/>Nerds |
|
91
|
+
|--------|----------------------------|-----------------------------------------------|-----|---------------|-------------|---------------|---------------|---------|--------|-----------|----------------|---------------|--------------|
|
92
|
+
| `html` | `simplecov-html` | ✅ | ✅ | | | | | | | | | | ✅ |
|
93
|
+
| `xml` | `simplecov-cobertura` | ⚠️ [works (with warnings); upvote #30!][sc30] | | | ✅ | | | ✅ | | | | | ✅ |
|
94
|
+
| `rcov` | `simplecov-rcov` | ✅ | | | | | | | ✅ | | | | ✅ |
|
95
|
+
| `lcov` | `simplecov-lcov` | ✅ | | ✅ | | ✅ | ✅ | | | ✅ | | ✅ | ✅ |
|
96
|
+
| `json` | `simplecov_json_formatter` | ✅ | | ✅ | | ✅ | ✅ | | | | ✅ | | ✅ |
|
97
|
+
| `tty` | `simplecov-console` | ✅ | | | | | | | | | | | ✅ |
|
98
|
+
|
99
|
+
If you find this working/not working different than above please open an issue / PR!
|
100
|
+
|
101
|
+
## ☝️ Not actually *every CI*
|
58
102
|
|
59
|
-
|
103
|
+
This gem does not add coverage parsing to CI's that don't have it, since that's impossible.
|
104
|
+
Vendor-specific formats which are not shared by other vendors are also not supported (e.g. BuildKite).
|
60
105
|
|
61
|
-
|
62
|
-
|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
63
|
-
| 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] |
|
64
|
-
| Works with MRI Ruby 2 | [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] |
|
65
|
-
| Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
|
66
|
-
| Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![HEAD on RubyDoc.info][📜docs-head-rd-img]][🚎yard-head] [![BDFL Blog][🚂bdfl-blog-img]][🚂bdfl-blog] [![Wiki][📜wiki-img]][📜wiki] |
|
67
|
-
| Compliance | [![License: MIT][📄license-img]][📄license-ref] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![CodeQL][🖐codeQL-img]][🖐codeQL] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] |
|
68
|
-
| Expert 1:1 Support | [![Get help from me on Upwork][👨🏼🏫expsup-upwork-img]][👨🏼🏫expsup-upwork] `or` [![Get help from me on Codementor][👨🏼🏫expsup-codementor-img]][👨🏼🏫expsup-codementor] |
|
69
|
-
| Enterprise Support | [![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]<br/>💡Subscribe for support guarantees covering _all_ FLOSS dependencies!<br/>💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]!<br/>💡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! |
|
70
|
-
| Comrade BDFL 🎖️ | [![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 BDFL][🚂bdfl-contact-img]][🚂bdfl-contact] [![My technical writing][💖💁🏼♂️devto-img]][💖💁🏼♂️devto] |
|
71
|
-
| `...` 💖 | [![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] |
|
106
|
+
You'll have to configure them manually if you use them:
|
72
107
|
|
73
|
-
|
108
|
+
* BuildKite's custom [simplecov extension][buildkite-ext]
|
109
|
+
* GitHub Actions doesn't parse test output, but...
|
110
|
+
* I configure my `coverage` workflow ([see example][example-cov-wf]) to upload coverage reports to SaaS services like:
|
111
|
+
* [codecov.io][🔑codecov] (needs token for upload)
|
112
|
+
* [QLTY.sh][🔑cc-cov] (needs token for upload)
|
113
|
+
* [coveralls.io][🔑coveralls]
|
114
|
+
* This gem helps me configure my `coverage` workflow to use Github Actions designed to report coverage like:
|
115
|
+
* Repo: [irongut/CodeCoverageSummary][GHA-ccs-repo]
|
116
|
+
* Repo: [marocchino/sticky-pull-request-comment][GHA-sprc-repo]
|
117
|
+
|
118
|
+
|
119
|
+
[buildkite-ext]: https://github.com/buildkite/simplecov-buildkite
|
120
|
+
[example-cov-wf]: https://github.com/kettle-rb/kettle-soup-cover/blob/main/.github/workflows/coverage.yml
|
121
|
+
[sc30]: https://github.com/dashingrocket/simplecov-cobertura/issues/30
|
122
|
+
|
123
|
+
This library is based on ideas I originally introduced in the gem _[rspec-stubbed_env](https://github.com/pboling/rspec-stubbed_env)_.
|
124
|
+
|
125
|
+
## 💡 Info you can shake a stick at
|
126
|
+
|
127
|
+
| Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
|
128
|
+
|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
129
|
+
| 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] |
|
130
|
+
| Works with MRI Ruby 2 | [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] |
|
131
|
+
| 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] |
|
132
|
+
| Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![HEAD on RubyDoc.info][📜docs-head-rd-img]][🚎yard-head] [![BDFL Blog][🚂bdfl-blog-img]][🚂bdfl-blog] [![Wiki][📜wiki-img]][📜wiki] |
|
133
|
+
| 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] |
|
134
|
+
| Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] |
|
135
|
+
| 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] |
|
136
|
+
| Enterprise Support | [![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]<br/>💡Subscribe for support guarantees covering _all_ FLOSS dependencies!<br/>💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]!<br/>💡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! |
|
137
|
+
| Comrade BDFL 🎖️ | [![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 BDFL][🚂bdfl-contact-img]][🚂bdfl-contact] [![My technical writing][💖💁🏼♂️devto-img]][💖💁🏼♂️devto] |
|
138
|
+
| `...` 💖 | [![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] |
|
139
|
+
|
140
|
+
## ✨ Installation
|
74
141
|
|
75
142
|
Install the gem and add to the application's Gemfile by executing:
|
76
143
|
|
@@ -80,24 +147,80 @@ If bundler is not being used to manage dependencies, install the gem by executin
|
|
80
147
|
|
81
148
|
$ gem install kettle-soup-cover
|
82
149
|
|
83
|
-
|
150
|
+
### 🔒 Secure Installation
|
151
|
+
|
152
|
+
`kettle-soup-cover` is cryptographically signed, and has verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by
|
153
|
+
[stone_checksums][💎stone_checksums]. Be sure the gem you install hasn’t been tampered with
|
154
|
+
by following the instructions below.
|
155
|
+
|
156
|
+
Add my public key (if you haven’t already, expires 2045-04-29) as a trusted certificate:
|
157
|
+
|
158
|
+
```shell
|
159
|
+
gem cert --add <(curl -Ls https://raw.github.com/kettle-rb/kettle-soup-cover/main/certs/pboling.pem)
|
160
|
+
```
|
161
|
+
|
162
|
+
You only need to do that once. Then proceed to install with:
|
163
|
+
|
164
|
+
```shell
|
165
|
+
gem install kettle-soup-cover -P MediumSecurity
|
166
|
+
```
|
167
|
+
|
168
|
+
The `MediumSecurity` trust profile will verify signed gems, but allow the installation of unsigned dependencies.
|
84
169
|
|
85
|
-
|
170
|
+
This is necessary because not all of `kettle-soup-cover`’s dependencies are signed, so we cannot use `HighSecurity`.
|
171
|
+
|
172
|
+
If you want to up your security game full-time:
|
173
|
+
|
174
|
+
```shell
|
175
|
+
bundle config set --global trust-policy MediumSecurity
|
176
|
+
```
|
177
|
+
|
178
|
+
NOTE: Be prepared to track down certs for signed gems and add them the same way you added mine.
|
179
|
+
|
180
|
+
## 🔧 Basic Usage
|
181
|
+
|
182
|
+
### RSpec or MiniTest
|
183
|
+
|
184
|
+
In your `spec/spec_helper.rb` or `tests/test_helper.rb`, just before loading the library under test,
|
185
|
+
add two lines of code:
|
186
|
+
|
187
|
+
### With Ruby 2.7+
|
86
188
|
|
87
189
|
```ruby
|
88
|
-
# This does not require "simplecov",
|
89
|
-
# because that has a side-effect of running `.simplecov`
|
90
190
|
require "kettle-soup-cover"
|
191
|
+
require "simplecov" if Kettle::Soup::Cover::DO_COV # `.simplecov` is run here!
|
192
|
+
# IMPORTANT: If you are using MiniTest instead of RSpec, also do this (and not in .simplecov):
|
193
|
+
# SimpleCov.external_at_exit = true
|
194
|
+
```
|
195
|
+
|
196
|
+
### Projects that run tests against older Ruby versions, e.g. with Appraisals
|
91
197
|
|
92
|
-
|
93
|
-
|
198
|
+
```ruby
|
199
|
+
# NOTE: Gemfiles for older rubies won't have kettle-soup-cover.
|
200
|
+
# The rescue LoadError handles that scenario.
|
201
|
+
begin
|
202
|
+
require "kettle-soup-cover"
|
203
|
+
|
204
|
+
if Kettle::Soup::Cover::DO_COV
|
205
|
+
require "simplecov" # `.simplecov` is run here!
|
206
|
+
|
207
|
+
# IMPORTANT: If you are using MiniTest instead of RSpec, also do this (and not in .simplecov):
|
208
|
+
# SimpleCov.external_at_exit = true
|
209
|
+
end
|
210
|
+
rescue LoadError => error
|
211
|
+
# check the error message, if you are so inclined, and re-raise if not what is expected
|
212
|
+
raise error unless error.message.include?("kettle")
|
213
|
+
end
|
94
214
|
```
|
95
215
|
|
96
|
-
|
216
|
+
### All projects
|
217
|
+
|
218
|
+
In your `.simplecov` file, add 2 lines of code:
|
97
219
|
|
98
220
|
```ruby
|
99
|
-
require "kettle/soup/cover/config"
|
100
|
-
|
221
|
+
require "kettle/soup/cover/config" # 12-factor, ENV-based configuration, with good defaults!
|
222
|
+
# you could do this somewhere else, up to you, but you do have to do it somewhere
|
223
|
+
SimpleCov.start
|
101
224
|
```
|
102
225
|
|
103
226
|
See [Advanced Usage](#advanced-usage) below for more info,
|
@@ -113,10 +236,10 @@ That's it!
|
|
113
236
|
### Rakefile
|
114
237
|
|
115
238
|
You'll need to have your `test` task defined.
|
116
|
-
If you use `spec` instead, you can
|
239
|
+
If you use `spec` instead, you can make it a pre-requisite of the `test` task with:
|
117
240
|
|
118
241
|
```ruby
|
119
|
-
desc "
|
242
|
+
desc "run spec task with test task"
|
120
243
|
task test: :spec
|
121
244
|
```
|
122
245
|
|
@@ -162,6 +285,7 @@ K_SOUP_COV_MIN_HARD
|
|
162
285
|
K_SOUP_COV_MIN_LINE
|
163
286
|
K_SOUP_COV_MULTI_FORMATTERS
|
164
287
|
K_SOUP_COV_PREFIX
|
288
|
+
K_SOUP_COV_OPEN_BIN
|
165
289
|
K_SOUP_COV_USE_MERGING
|
166
290
|
K_SOUP_COV_VERBOSE
|
167
291
|
```
|
@@ -172,6 +296,57 @@ have their own complete suite of ENV variables you can configure.
|
|
172
296
|
[env-constants]: /lib/kettle/soup/cover.rb
|
173
297
|
[simplecov-console]: https://github.com/chetan/simplecov-console#options
|
174
298
|
|
299
|
+
#### Compatible with GitHub Actions for Code Coverage feedback in pull requests
|
300
|
+
|
301
|
+
If you don't want to configure a SaaS service to update your pull requests with
|
302
|
+
code coverage there are alternatives.
|
303
|
+
|
304
|
+
After the step that runs your test suite use one or more of the following.
|
305
|
+
|
306
|
+
##### irongut/CodeCoverageSummary
|
307
|
+
|
308
|
+
Repo: [irongut/CodeCoverageSummary][GHA-ccs-repo]
|
309
|
+
|
310
|
+
[GHA-ccs-repo]: https://github.com/irongut/CodeCoverageSummary
|
311
|
+
|
312
|
+
```yaml
|
313
|
+
|
314
|
+
- name: Code Coverage Summary Report
|
315
|
+
uses: irongut/CodeCoverageSummary@v1.3.0
|
316
|
+
if: ${{ github.event_name == 'pull_request' }}
|
317
|
+
with:
|
318
|
+
filename: ./coverage/coverage.xml
|
319
|
+
badge: true
|
320
|
+
fail_below_min: true
|
321
|
+
format: markdown
|
322
|
+
hide_branch_rate: false
|
323
|
+
hide_complexity: true
|
324
|
+
indicators: true
|
325
|
+
output: both
|
326
|
+
thresholds: '100 100' # '<MIN LINE COVERAGE> <MIN BRANCH COVERAGE>'
|
327
|
+
continue-on-error: ${{ matrix.experimental != 'false' }}
|
328
|
+
```
|
329
|
+
|
330
|
+
##### *marocchino/sticky-pull-request-comment*
|
331
|
+
|
332
|
+
Repo: [marocchino/sticky-pull-request-comment][GHA-sprc-repo]
|
333
|
+
|
334
|
+
[GHA-sprc-repo]: https://github.com/marocchino/sticky-pull-request-comment
|
335
|
+
|
336
|
+
```yaml
|
337
|
+
- name: Add Coverage PR Comment
|
338
|
+
uses: marocchino/sticky-pull-request-comment@v2
|
339
|
+
if: ${{ github.event_name == 'pull_request' }}
|
340
|
+
with:
|
341
|
+
recreate: true
|
342
|
+
path: code-coverage-results.md
|
343
|
+
continue-on-error: ${{ matrix.experimental != 'false' }}
|
344
|
+
```
|
345
|
+
|
346
|
+
### 🚀 Release Instructions
|
347
|
+
|
348
|
+
See [CONTRIBUTING.md][🤝contributing].
|
349
|
+
|
175
350
|
## 🔐 Security
|
176
351
|
|
177
352
|
See [SECURITY.md][🔐security].
|
@@ -179,8 +354,7 @@ See [SECURITY.md][🔐security].
|
|
179
354
|
## 🤝 Contributing
|
180
355
|
|
181
356
|
If you need some ideas of where to help, you could work on adding more code coverage,
|
182
|
-
or if it is already 💯 (see [below](#code-coverage)) check
|
183
|
-
or check [issues][🤝issues], or [PRs][🤝pulls],
|
357
|
+
or if it is already 💯 (see [below](#code-coverage)) check [issues][🤝gh-issues], or [PRs][🤝gh-pulls],
|
184
358
|
or use the gem and think about how it could be better.
|
185
359
|
|
186
360
|
We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
|
@@ -232,7 +406,7 @@ It is obvious to many, but not all, and since the spec is silent, the bike shedd
|
|
232
406
|
|
233
407
|
> dropping support for a platform is both obviously and objectively a breaking change
|
234
408
|
|
235
|
-
- Jordan Harband (@ljharb) [in SemVer issue 716][📌semver-breaking]
|
409
|
+
- Jordan Harband (@ljharb, maintainer of SemVer) [in SemVer issue 716][📌semver-breaking]
|
236
410
|
|
237
411
|
To get a better understanding of how SemVer is intended to work over a project's lifetime,
|
238
412
|
read this article from the creator of SemVer:
|
@@ -281,7 +455,7 @@ or one of the others at the head of this README.
|
|
281
455
|
[![Buy me a latte][🖇buyme-img]][🖇buyme]
|
282
456
|
|
283
457
|
[✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
|
284
|
-
[⛳️gem-namespace]: https://github.com/kettle-rb/kettle-soup-cover
|
458
|
+
[⛳️gem-namespace]: https://github.com/kettle-rb/kettle-soup-cover
|
285
459
|
[⛳️namespace-img]: https://img.shields.io/badge/namespace-Kettle%3A%3ASoup%3A%3ACover-brightgreen.svg?style=flat&logo=ruby&logoColor=white
|
286
460
|
[⛳️gem-name]: https://rubygems.org/gems/kettle-soup-cover
|
287
461
|
[⛳️name-img]: https://img.shields.io/badge/name-kettle--soup--cover-brightgreen.svg?style=flat&logo=rubygems&logoColor=red
|
@@ -297,14 +471,18 @@ or one of the others at the head of this README.
|
|
297
471
|
[💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
|
298
472
|
[💖🐘ruby-mast]: https://ruby.social/@galtzo
|
299
473
|
[💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https%3A%2F%2Fruby.social&style=flat&logo=mastodon&label=Ruby%20%40galtzo
|
300
|
-
[💖🦋bluesky]: https://galtzo.
|
301
|
-
[💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.
|
474
|
+
[💖🦋bluesky]: https://bsky.app/profile/galtzo.com
|
475
|
+
[💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
|
302
476
|
[💖🌳linktree]: https://linktr.ee/galtzo
|
303
477
|
[💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
|
304
478
|
[💖💁🏼♂️devto]: https://dev.to/galtzo
|
305
479
|
[💖💁🏼♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
|
306
480
|
[💖💁🏼♂️aboutme]: https://about.me/peter.boling
|
307
481
|
[💖💁🏼♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
|
482
|
+
[💖🧊berg]: https://codeberg.org/pboling
|
483
|
+
[💖🐙hub]: https://github.org/pboling
|
484
|
+
[💖🛖hut]: https://sr.ht/~galtzo/
|
485
|
+
[💖🧪lab]: https://gitlab.com/pboling
|
308
486
|
[👨🏼🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
|
309
487
|
[👨🏼🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
|
310
488
|
[👨🏼🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
|
@@ -316,6 +494,8 @@ or one of the others at the head of this README.
|
|
316
494
|
[🚂railsbling]: http://www.railsbling.com
|
317
495
|
[📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
|
318
496
|
[📜src-gl]: https://gitlab.com/kettle-rb/kettle-soup-cover/
|
497
|
+
[📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
|
498
|
+
[📜src-cb]: https://codeberg.org/kettle-rb/kettle-soup-cover
|
319
499
|
[📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
|
320
500
|
[📜src-gh]: https://github.com/kettle-rb/kettle-soup-cover
|
321
501
|
[📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
|
@@ -328,10 +508,10 @@ or one of the others at the head of this README.
|
|
328
508
|
[👽oss-helpi]: https://www.codetriage.com/kettle-rb/kettle-soup-cover/badges/users.svg
|
329
509
|
[👽version]: https://rubygems.org/gems/kettle-soup-cover
|
330
510
|
[👽versioni]: https://img.shields.io/gem/v/kettle-soup-cover.svg
|
331
|
-
[🔑
|
332
|
-
[🔑
|
333
|
-
[🔑
|
334
|
-
[🔑
|
511
|
+
[🔑qlty-mnt]: https://qlty.sh/gh/kettle-rb/projects/kettle-soup-cover
|
512
|
+
[🔑qlty-mnti♻️]: https://qlty.sh/badges/75db1a51-b8ab-423a-b396-8b518067d8c3/maintainability.svg
|
513
|
+
[🔑qlty-cov]: https://qlty.sh/gh/kettle-rb/projects/kettle-soup-cover
|
514
|
+
[🔑qlty-covi♻️]: https://qlty.sh/badges/75db1a51-b8ab-423a-b396-8b518067d8c3/test_coverage.svg
|
335
515
|
[🔑codecov]: https://codecov.io/gh/kettle-rb/kettle-soup-cover
|
336
516
|
[🔑codecovi♻️]: https://codecov.io/gh/kettle-rb/kettle-soup-cover/branch/main/graph/badge.svg?token=0X5VEW9USD
|
337
517
|
[🔑coveralls]: https://coveralls.io/github/kettle-rb/kettle-soup-cover?branch=main
|
@@ -358,16 +538,19 @@ or one of the others at the head of this README.
|
|
358
538
|
[🚎8-ho-wfi]: https://github.com/kettle-rb/kettle-soup-cover/actions/workflows/hoary.yml/badge.svg
|
359
539
|
[🚎11-c-wf]: https://github.com/kettle-rb/kettle-soup-cover/actions/workflows/current.yml
|
360
540
|
[🚎11-c-wfi]: https://github.com/kettle-rb/kettle-soup-cover/actions/workflows/current.yml/badge.svg
|
361
|
-
[⛳liberapay-img]: https://img.shields.io/liberapay/
|
541
|
+
[⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay
|
362
542
|
[⛳liberapay]: https://liberapay.com/pboling/donate
|
363
543
|
[🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
|
364
544
|
[🖇sponsor]: https://github.com/sponsors/pboling
|
365
|
-
[🖇polar-img]: https://
|
545
|
+
[🖇polar-img]: https://img.shields.io/badge/polar-donate-yellow.svg
|
366
546
|
[🖇polar]: https://polar.sh/pboling
|
367
|
-
[🖇kofi-img]: https://img.shields.io/badge/
|
547
|
+
[🖇kofi-img]: https://img.shields.io/badge/a_more_different_coffee-✓-yellow.svg
|
368
548
|
[🖇kofi]: https://ko-fi.com/O5O86SNP4
|
369
549
|
[🖇patreon-img]: https://img.shields.io/badge/patreon-donate-yellow.svg
|
370
550
|
[🖇patreon]: https://patreon.com/galtzo
|
551
|
+
[🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff
|
552
|
+
[🖇buyme]: https://www.buymeacoffee.com/pboling
|
553
|
+
[🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-✓-yellow.svg?style=flat
|
371
554
|
[💎ruby-2.7i]: https://img.shields.io/badge/Ruby-2.7-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
|
372
555
|
[💎ruby-3.0i]: https://img.shields.io/badge/Ruby-3.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
373
556
|
[💎ruby-3.1i]: https://img.shields.io/badge/Ruby-3.1-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
@@ -375,8 +558,13 @@ or one of the others at the head of this README.
|
|
375
558
|
[💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
376
559
|
[💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
|
377
560
|
[💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
|
378
|
-
[🤝issues]: https://github.com/kettle-rb/kettle-soup-cover/issues
|
379
|
-
[🤝pulls]: https://github.com/kettle-rb/kettle-soup-cover/pulls
|
561
|
+
[🤝gh-issues]: https://github.com/kettle-rb/kettle-soup-cover/issues
|
562
|
+
[🤝gh-pulls]: https://github.com/kettle-rb/kettle-soup-cover/pulls
|
563
|
+
[🤝gl-issues]: https://gitlab.com/oauth-xx/oauth2/-/issues
|
564
|
+
[🤝gl-pulls]: https://gitlab.com/oauth-xx/oauth2/-/merge_requests
|
565
|
+
[🤝cb-issues]: https://codeberg.org/oauth-xx/oauth2/issues
|
566
|
+
[🤝cb-pulls]: https://codeberg.org/oauth-xx/oauth2/pulls
|
567
|
+
[🤝cb-donate]: https://donate.codeberg.org/
|
380
568
|
[🤝contributing]: CONTRIBUTING.md
|
381
569
|
[🔑codecov-g♻️]: https://codecov.io/gh/kettle-rb/kettle-soup-cover/graphs/tree.svg?token=0X5VEW9USD
|
382
570
|
[🖐contrib-rocks]: https://contrib.rocks
|
@@ -384,27 +572,33 @@ or one of the others at the head of this README.
|
|
384
572
|
[🖐contributors-img]: https://contrib.rocks/image?repo=kettle-rb/kettle-soup-cover
|
385
573
|
[🚎contributors-gl]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/graphs/main
|
386
574
|
[🪇conduct]: CODE_OF_CONDUCT.md
|
387
|
-
[🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-
|
575
|
+
[🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
|
388
576
|
[📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
|
389
577
|
[📌semver]: https://semver.org/spec/v2.0.0.html
|
390
|
-
[📌semver-img]: https://img.shields.io/badge/semver-2.0.0-
|
578
|
+
[📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
|
391
579
|
[📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
|
392
580
|
[📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
|
393
581
|
[📌changelog]: CHANGELOG.md
|
394
582
|
[📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
|
395
|
-
[📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-
|
583
|
+
[📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
|
584
|
+
[📌gitmoji]:https://gitmoji.dev
|
585
|
+
[📌gitmoji-img]:https://img.shields.io/badge/gitmoji_commits-%20😜%20😍-34495e.svg?style=flat-square
|
396
586
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
397
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.
|
587
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.137-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
398
588
|
[🔐security]: SECURITY.md
|
399
|
-
[🔐security-img]: https://img.shields.io/badge/security-policy-
|
589
|
+
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
400
590
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
401
591
|
[📄license]: LICENSE.txt
|
402
592
|
[📄license-ref]: https://opensource.org/licenses/MIT
|
403
|
-
[📄license-img]: https://img.shields.io/badge/License-MIT-
|
593
|
+
[📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
|
404
594
|
[📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
|
405
|
-
[📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-
|
595
|
+
[📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
|
406
596
|
[🚎yard-current]: http://rubydoc.info/gems/kettle-soup-cover
|
407
597
|
[🚎yard-head]: https://rubydoc.info/github/kettle-rb/kettle-soup-cover/main
|
408
|
-
[
|
409
|
-
[
|
410
|
-
[
|
598
|
+
[💎stone_checksums]: https://github.com/pboling/stone_checksums
|
599
|
+
[💎SHA_checksums]: https://gitlab.com/kettle-rb/kettle-soup-cover/-/tree/main/checksums
|
600
|
+
[💎rlts]: https://github.com/rubocop-lts/rubocop-lts
|
601
|
+
[💎rlts-img]: https://img.shields.io/badge/code_style_%26_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
|
602
|
+
[💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
|
603
|
+
[✉️discord-invite]: https://discord.gg/3qme4XHNKN
|
604
|
+
[✉️discord-invite-img]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge
|