kettle-soup-cover 3.0.4 → 3.0.6
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 +76 -1
- data/LICENSE.md +1 -1
- data/README.md +6 -5
- data/exe/kettle-soup-cover +17 -0
- data/lib/kettle/soup/cover/constants.rb +2 -0
- data/lib/kettle/soup/cover/version.rb +4 -1
- data/lib/kettle/soup/cover.rb +73 -14
- data.tar.gz.sig +0 -0
- metadata +33 -13
- 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: 268a85dce488669857679360088a676efa2c4687a94e2c2c0c9b6744ea0a0b08
|
|
4
|
+
data.tar.gz: 58f75380d4e5408691b068885698382654898be5d09b2e80330f0639fcb69447
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f1cc03808a7caf562808cb7a1ba574c55477587a814df31f80212cdcb44430416beb9f858a3541adbe83ff3a781ab42fa83b3cd10da1f8b5557686bdb3e7f377
|
|
7
|
+
data.tar.gz: add520b491aab1167ab2399349168b35597c95e1355c17ae43594b393a47412ea2d3b6b5e7cae922f28f765e296f8072ad9e2d4bdea0e9b9e3e5d6ceff8442b1
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,77 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [3.0.6] - 2026-07-28
|
|
34
|
+
|
|
35
|
+
- TAG: [v3.0.6][3.0.6t]
|
|
36
|
+
- COVERAGE: 98.58% -- 278/282 lines in 12 files
|
|
37
|
+
- BRANCH COVERAGE: 91.67% -- 77/84 branches in 12 files
|
|
38
|
+
- 20.00% documented
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- kettle-jem-template-20260726-001 - Projects now include YARD lint
|
|
43
|
+
configuration and documentation dependencies so documentation issues fail
|
|
44
|
+
before generated docs are refreshed.
|
|
45
|
+
|
|
46
|
+
- kettle-jem-template-20260727-001 - Spec harness documentation now lists the
|
|
47
|
+
RSpec helpers provided by `kettle-test`.
|
|
48
|
+
|
|
49
|
+
### Changed
|
|
50
|
+
|
|
51
|
+
- The `kettle-soup-cover` executable startup header is now shown only when
|
|
52
|
+
`--verbose` is passed; `-v` and `--version` still print just the executable
|
|
53
|
+
version and exit.
|
|
54
|
+
- Turbo test parent collation now runs every configured SimpleCov formatter
|
|
55
|
+
while suppressing repeated formatter status lines, keeping default task
|
|
56
|
+
coverage output compact without reducing formatter coverage.
|
|
57
|
+
|
|
58
|
+
- kettle-jem-template-20260725-002 - Version specs now use `anonymous_loader` to
|
|
59
|
+
cover `version.rb` without redefining constants, or are removed when version
|
|
60
|
+
specs are not managed for the project.
|
|
61
|
+
|
|
62
|
+
- kettle-jem-template-20260728-001 - Generated Ruby workflows now use clearer
|
|
63
|
+
setup-ruby-flash planning and can prepare appraisal-only jobs without
|
|
64
|
+
installing the main Gemfile bundle.
|
|
65
|
+
|
|
66
|
+
### Fixed
|
|
67
|
+
|
|
68
|
+
- kettle-jem-template-20260726-002 - Generated version files now document their
|
|
69
|
+
version namespace and constants, reducing warning-only YARD lint output.
|
|
70
|
+
|
|
71
|
+
- kettle-jem-template-20260726-003 - Coverage upload steps now treat Coveralls,
|
|
72
|
+
QLTY, and Codecov as optional, so provider outages do not fail CI when local
|
|
73
|
+
coverage thresholds still pass.
|
|
74
|
+
- kettle-jem-template-20260728-002 - Generated RuboCop configs now ignore the
|
|
75
|
+
same `gemfiles/vendor/bundle` tree as `.gitignore`, so vendored dependency
|
|
76
|
+
installs are not reported as project lint debt.
|
|
77
|
+
|
|
78
|
+
## [3.0.5] - 2026-07-25
|
|
79
|
+
|
|
80
|
+
- TAG: [v3.0.5][3.0.5t]
|
|
81
|
+
- COVERAGE: 100.00% -- 257/257 lines in 12 files
|
|
82
|
+
- BRANCH COVERAGE: 93.24% -- 69/74 branches in 12 files
|
|
83
|
+
- 16.90% documented
|
|
84
|
+
|
|
85
|
+
### Changed
|
|
86
|
+
|
|
87
|
+
- The `kettle-soup-cover` executable now supports `-v` / `--version` and prints
|
|
88
|
+
a standard startup header on normal runs.
|
|
89
|
+
|
|
90
|
+
- kettle-jem-template-20260725-001 - Generated JRuby and TruffleRuby workflow
|
|
91
|
+
files now run when pull request head branches start with `feature/release`,
|
|
92
|
+
so release CI monitoring does not report intentionally skipped engine
|
|
93
|
+
workflows as failures.
|
|
94
|
+
|
|
95
|
+
### Fixed
|
|
96
|
+
|
|
97
|
+
- The `kettle-soup-cover` executable now uses normal `require` loading for its
|
|
98
|
+
version file, avoiding `require_relative` lint drift in shipped executables.
|
|
99
|
+
|
|
100
|
+
- Turbo test coverage collation now disables SimpleCov's process-exit formatter
|
|
101
|
+
after the explicit collate report, preventing duplicate coverage reports from
|
|
102
|
+
one `turbo_tests2` run.
|
|
103
|
+
|
|
33
104
|
## [3.0.4] - 2026-07-21
|
|
34
105
|
|
|
35
106
|
- TAG: [v3.0.4][3.0.4t]
|
|
@@ -596,7 +667,11 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
596
667
|
|
|
597
668
|
- Initial release
|
|
598
669
|
|
|
599
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-soup-cover/compare/v3.0.
|
|
670
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-soup-cover/compare/v3.0.6...HEAD
|
|
671
|
+
[3.0.6]: https://github.com/kettle-dev/kettle-soup-cover/compare/v3.0.5...v3.0.6
|
|
672
|
+
[3.0.6t]: https://github.com/kettle-dev/kettle-soup-cover/releases/tag/v3.0.6
|
|
673
|
+
[3.0.5]: https://github.com/kettle-dev/kettle-soup-cover/compare/v3.0.4...v3.0.5
|
|
674
|
+
[3.0.5t]: https://github.com/kettle-dev/kettle-soup-cover/releases/tag/v3.0.5
|
|
600
675
|
[3.0.4]: https://github.com/kettle-dev/kettle-soup-cover/compare/v3.0.3...v3.0.4
|
|
601
676
|
[3.0.4t]: https://github.com/kettle-dev/kettle-soup-cover/releases/tag/v3.0.4
|
|
602
677
|
[3.0.3]: https://github.com/kettle-dev/kettle-soup-cover/compare/v3.0.2...v3.0.3
|
data/LICENSE.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
This project is made available under the following license.
|
|
4
4
|
Choose the option that best fits your use case:
|
|
5
5
|
|
|
6
|
-
- [AGPL-3.0-only](AGPL-3.0-only.md)
|
|
6
|
+
- [AGPL-3.0-only](https://github.com/kettle-dev/kettle-soup-cover/blob/main/AGPL-3.0-only.md)
|
|
7
7
|
|
|
8
8
|
If none of the above licenses fit your use case, please [contact us](mailto:floss@galtzo.com) to discuss a custom commercial license.
|
|
9
9
|
|
data/README.md
CHANGED
|
@@ -86,7 +86,7 @@ where this library is considered a package of [SOUP](https://en.wikipedia.org/wi
|
|
|
86
86
|
| Works with MRI Ruby 4 | [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
|
|
87
87
|
| Works with MRI Ruby 3 | [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎ruby-3.2-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎ruby-3.3-wf] [![Ruby 3.4 Compat][💎ruby-3.4i]][🚎ruby-3.4-wf]|
|
|
88
88
|
| Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Get help from RubyForum][✉️ruby-forum-img]][✉️ruby-forum] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼🏫expsup-upwork-img]][👨🏼🏫expsup-upwork] [![Get help from me on Codementor][👨🏼🏫expsup-codementor-img]][👨🏼🏫expsup-codementor] |
|
|
89
|
-
| Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on
|
|
89
|
+
| 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] |
|
|
90
90
|
| 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] [![GitLab Wiki][📜gl-wiki-img]][📜gl-wiki] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] |
|
|
91
91
|
| Compliance | [![License: AGPL-3.0-only][📄license-img]][📄license] [![Apache license compatibility: Category X][📄license-compat-img]][📄license-compat] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
|
|
92
92
|
| 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] |
|
|
@@ -196,6 +196,7 @@ setting is read from `K_SOUP_COV_DIR`.
|
|
|
196
196
|
| `K_SOUP_COV_MULTI_FORMATTERS` | `true` on CI; otherwise `true` when any formatter is configured | Uses SimpleCov's multi-formatter support. |
|
|
197
197
|
| `K_SOUP_COV_OPEN_BIN` | `open` on macOS, `xdg-open` elsewhere | Browser-opening command for `rake coverage`. Set empty to only print the report path. |
|
|
198
198
|
| `K_SOUP_COV_PREFIX` | `K_SOUP_COV_` | Alternate namespace for all `K_SOUP_COV_*` variables. |
|
|
199
|
+
| `K_SOUP_COV_QUIET_COLLATION` | `true` | Suppresses repeated SimpleCov formatter status lines during turbo_tests2 parent collation while still running all configured formatters. Set `false` to debug formatter output. |
|
|
199
200
|
| `K_SOUP_COV_TURBO_TESTS` | `true` | Enables turbo_tests2 worker coverage isolation when `TEST_ENV_NUMBER` is present. |
|
|
200
201
|
| `K_SOUP_COV_TURBO_TESTS_DIR` | `turbo_tests` | Subdirectory for worker coverage under `K_SOUP_COV_DIR`. |
|
|
201
202
|
| `K_SOUP_COV_USE_MERGING` | `true` | Enables SimpleCov result merging. |
|
|
@@ -613,7 +614,7 @@ See [CHANGELOG.md][📌changelog] for a list of releases.
|
|
|
613
614
|
|
|
614
615
|
## 📄 License
|
|
615
616
|
|
|
616
|
-
The gem is available under the following license: [AGPL-3.0-only](AGPL-3.0-only.md).
|
|
617
|
+
The gem is available under the following license: [AGPL-3.0-only](https://github.com/kettle-dev/kettle-soup-cover/blob/main/AGPL-3.0-only.md).
|
|
617
618
|
See [LICENSE.md][📄license] for details.
|
|
618
619
|
|
|
619
620
|
If none of the available licenses suit your use case, please [contact us](mailto:floss@galtzo.com) to discuss a custom commercial license.
|
|
@@ -730,7 +731,7 @@ Thanks for RTFM. ☺️
|
|
|
730
731
|
[📜src-gl]: https://gitlab.com/kettle-dev/kettle-soup-cover
|
|
731
732
|
[📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
|
|
732
733
|
[📜src-cb]: https://codeberg.org/kettle-dev/kettle-soup-cover
|
|
733
|
-
[📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=
|
|
734
|
+
[📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=GitHub&logoColor=green
|
|
734
735
|
[📜src-gh]: https://github.com/kettle-dev/kettle-soup-cover
|
|
735
736
|
[📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
|
|
736
737
|
[📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
|
|
@@ -814,12 +815,12 @@ Thanks for RTFM. ☺️
|
|
|
814
815
|
[📌gitmoji]: https://gitmoji.dev
|
|
815
816
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
816
817
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
817
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.
|
|
818
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.282-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
818
819
|
[🔐security]: https://github.com/kettle-dev/kettle-soup-cover/blob/main/SECURITY.md
|
|
819
820
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
820
821
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
821
822
|
[📄license]: LICENSE.md
|
|
822
|
-
[📄license-ref]: AGPL-3.0-only.md
|
|
823
|
+
[📄license-ref]: https://github.com/kettle-dev/kettle-soup-cover/blob/main/AGPL-3.0-only.md
|
|
823
824
|
[📄license-img]: https://img.shields.io/badge/License-AGPL--3.0--only-259D6C.svg
|
|
824
825
|
[📄license-compat]: https://www.apache.org/legal/resolved.html#category-x
|
|
825
826
|
[📄license-compat-img]: https://img.shields.io/badge/Apache_Incompatible:_Category_X-%E2%9C%97-C0392B.svg?style=flat&logo=Apache
|
data/exe/kettle-soup-cover
CHANGED
|
@@ -15,6 +15,17 @@
|
|
|
15
15
|
|
|
16
16
|
require "json"
|
|
17
17
|
require "optparse"
|
|
18
|
+
|
|
19
|
+
script_basename = File.basename(__FILE__)
|
|
20
|
+
repo_lib = File.expand_path("../lib", __dir__)
|
|
21
|
+
$LOAD_PATH.unshift(repo_lib) if File.directory?(repo_lib) && !$LOAD_PATH.include?(repo_lib)
|
|
22
|
+
|
|
23
|
+
require "kettle/soup/cover/version"
|
|
24
|
+
if ARGV.any? { |arg| arg == "-v" || arg == "--version" }
|
|
25
|
+
puts Kettle::Soup::Cover::Version::VERSION
|
|
26
|
+
exit(0)
|
|
27
|
+
end
|
|
28
|
+
|
|
18
29
|
require "kettle/soup/cover"
|
|
19
30
|
|
|
20
31
|
file_filter = nil
|
|
@@ -22,6 +33,7 @@ max_details = 20
|
|
|
22
33
|
show_detail = false
|
|
23
34
|
coverage_path = nil
|
|
24
35
|
explicit_coverage_path = false
|
|
36
|
+
show_header = false
|
|
25
37
|
|
|
26
38
|
opts = OptionParser.new do |opt|
|
|
27
39
|
opt.banner = "Usage: kettle-soup-cover [options] [coverage.json path]"
|
|
@@ -38,6 +50,8 @@ opts = OptionParser.new do |opt|
|
|
|
38
50
|
puts opt
|
|
39
51
|
exit
|
|
40
52
|
end
|
|
53
|
+
opt.on("--verbose", "Show startup header") { show_header = true }
|
|
54
|
+
opt.on("-v", "--version", "Show version") {}
|
|
41
55
|
opt.on("-l", "--lines", "Show only line coverage") { @show_lines = true }
|
|
42
56
|
opt.on("-b", "--branches", "Show only branch coverage") { @show_branches = true }
|
|
43
57
|
opt.on("--no-lines", "Don't include line coverage") { @show_lines = false }
|
|
@@ -45,6 +59,9 @@ opts = OptionParser.new do |opt|
|
|
|
45
59
|
end
|
|
46
60
|
|
|
47
61
|
opts.parse!(ARGV)
|
|
62
|
+
|
|
63
|
+
puts "== #{script_basename} v#{Kettle::Soup::Cover::Version::VERSION} ==" if show_header
|
|
64
|
+
|
|
48
65
|
# If a positional arg is present (leftover after parsing) treat it as coverage json path
|
|
49
66
|
project_root = Dir.pwd
|
|
50
67
|
coverage_dir = File.expand_path(Kettle::Soup::Cover::COVERAGE_DIR, project_root)
|
|
@@ -125,6 +125,7 @@ module Kettle
|
|
|
125
125
|
# Default merge timeout of 1 hour (3600 seconds) - enough for most test suites
|
|
126
126
|
# Set K_SOUP_COV_MERGE_TIMEOUT to override
|
|
127
127
|
MERGE_TIMEOUT = ENV_GET.call("MERGE_TIMEOUT", "3600").to_i
|
|
128
|
+
QUIET_COLLATION = ENV_GET.call("QUIET_COLLATION", Constants::TRUE).casecmp?(Constants::TRUE)
|
|
128
129
|
VERBOSE = ENV_GET.call("VERBOSE", Constants::FALSE).casecmp?(Constants::TRUE)
|
|
129
130
|
|
|
130
131
|
WASHED_CONSTANTS = {
|
|
@@ -152,6 +153,7 @@ module Kettle
|
|
|
152
153
|
MULTI_FORMATTERS
|
|
153
154
|
OPEN_BIN
|
|
154
155
|
PREFIX
|
|
156
|
+
QUIET_COLLATION
|
|
155
157
|
SIMPLECOV_COMMAND_NAME
|
|
156
158
|
TRUE
|
|
157
159
|
TEST_ENV_NUMBER
|
|
@@ -3,9 +3,12 @@
|
|
|
3
3
|
module Kettle
|
|
4
4
|
module Soup
|
|
5
5
|
module Cover
|
|
6
|
+
# Version namespace for this gem.
|
|
6
7
|
module Version
|
|
7
|
-
|
|
8
|
+
# Current gem version.
|
|
9
|
+
VERSION = "3.0.6"
|
|
8
10
|
end
|
|
11
|
+
# Current gem version exposed at the traditional constant location.
|
|
9
12
|
VERSION = Version::VERSION # Traditional Constant Location
|
|
10
13
|
end
|
|
11
14
|
end
|
data/lib/kettle/soup/cover.rb
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
require "fileutils"
|
|
23
23
|
require "json"
|
|
24
24
|
require "rbconfig"
|
|
25
|
+
require "stringio"
|
|
25
26
|
|
|
26
27
|
# This gem
|
|
27
28
|
require_relative "cover/version"
|
|
@@ -81,36 +82,59 @@ module Kettle
|
|
|
81
82
|
Dir[File.join(turbo_tests_coverage_dir(coverage_dir, project_root: project_root), "*", "coverage.json")]
|
|
82
83
|
end
|
|
83
84
|
|
|
85
|
+
def turbo_tests_collation_marker_path(coverage_dir = Constants::COVERAGE_ROOT_DIR, project_root: Dir.pwd)
|
|
86
|
+
File.expand_path(File.join(coverage_dir, ".turbo_tests_collated"), project_root)
|
|
87
|
+
end
|
|
88
|
+
|
|
84
89
|
def collate_turbo_tests_coverage!(coverage_dir = Constants::COVERAGE_ROOT_DIR, project_root: Dir.pwd)
|
|
85
90
|
return :disabled unless turbo_tests_coverage?
|
|
86
91
|
|
|
87
92
|
resultsets = turbo_tests_resultset_paths(coverage_dir, project_root: project_root)
|
|
88
93
|
return :empty if resultsets.empty?
|
|
94
|
+
return :already_collated if turbo_tests_collated?(resultsets, coverage_dir, project_root: project_root)
|
|
89
95
|
|
|
90
96
|
require "simplecov"
|
|
91
97
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
98
|
+
with_quiet_collation_output do
|
|
99
|
+
SimpleCov.collate(resultsets) do
|
|
100
|
+
command_name("#{Constants::COMMAND_NAME} (turbo_tests2)")
|
|
101
|
+
enable_coverage(:branch)
|
|
102
|
+
primary_coverage(:branch)
|
|
103
|
+
skip(Constants::FILTER_DIRS)
|
|
104
|
+
coverage_dir(File.expand_path(coverage_dir, project_root))
|
|
105
|
+
|
|
106
|
+
Kettle::Soup::Cover.configure_formatters!
|
|
107
|
+
|
|
108
|
+
if Constants::MIN_COVERAGE_HARD
|
|
109
|
+
minimum_coverage(
|
|
110
|
+
branch: Constants::MIN_COVERAGE_BRANCH,
|
|
111
|
+
line: Constants::MIN_COVERAGE_LINE
|
|
112
|
+
)
|
|
113
|
+
end
|
|
106
114
|
end
|
|
107
115
|
end
|
|
108
116
|
|
|
117
|
+
SimpleCov.external_at_exit = true if SimpleCov.respond_to?(:external_at_exit=)
|
|
109
118
|
publish_turbo_tests_json_coverage!(coverage_dir, project_root: project_root)
|
|
119
|
+
mark_turbo_tests_collated!(coverage_dir, project_root: project_root)
|
|
110
120
|
|
|
111
121
|
:collated
|
|
112
122
|
end
|
|
113
123
|
|
|
124
|
+
def turbo_tests_collated?(resultsets, coverage_dir = Constants::COVERAGE_ROOT_DIR, project_root: Dir.pwd)
|
|
125
|
+
marker_path = turbo_tests_collation_marker_path(coverage_dir, project_root: project_root)
|
|
126
|
+
return false unless File.file?(marker_path)
|
|
127
|
+
|
|
128
|
+
marker_mtime = File.mtime(marker_path)
|
|
129
|
+
resultsets.all? { |path| File.file?(path) && File.mtime(path) <= marker_mtime }
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def mark_turbo_tests_collated!(coverage_dir = Constants::COVERAGE_ROOT_DIR, project_root: Dir.pwd)
|
|
133
|
+
marker_path = turbo_tests_collation_marker_path(coverage_dir, project_root: project_root)
|
|
134
|
+
FileUtils.mkdir_p(File.dirname(marker_path))
|
|
135
|
+
FileUtils.touch(marker_path)
|
|
136
|
+
end
|
|
137
|
+
|
|
114
138
|
def publish_turbo_tests_json_coverage!(coverage_dir = Constants::COVERAGE_ROOT_DIR, project_root: Dir.pwd)
|
|
115
139
|
paths = turbo_tests_json_paths(coverage_dir, project_root: project_root)
|
|
116
140
|
return :empty if paths.empty?
|
|
@@ -169,6 +193,41 @@ module Kettle
|
|
|
169
193
|
right
|
|
170
194
|
end
|
|
171
195
|
|
|
196
|
+
def with_quiet_collation_output
|
|
197
|
+
return yield unless Constants::QUIET_COLLATION && !Constants::VERBOSE
|
|
198
|
+
|
|
199
|
+
stdout = StringIO.new
|
|
200
|
+
stderr = StringIO.new
|
|
201
|
+
original_stdout = $stdout
|
|
202
|
+
original_stderr = $stderr
|
|
203
|
+
|
|
204
|
+
begin
|
|
205
|
+
$stdout = stdout
|
|
206
|
+
$stderr = stderr
|
|
207
|
+
yield
|
|
208
|
+
ensure
|
|
209
|
+
$stdout = original_stdout
|
|
210
|
+
$stderr = original_stderr
|
|
211
|
+
replay_quiet_collation_output(stdout.string, original_stdout)
|
|
212
|
+
replay_quiet_collation_output(stderr.string, original_stderr)
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
def replay_quiet_collation_output(output, io)
|
|
217
|
+
output.each_line do |line|
|
|
218
|
+
io.print(line) unless quiet_collation_formatter_line?(line)
|
|
219
|
+
end
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
def quiet_collation_formatter_line?(line)
|
|
223
|
+
stripped = line.strip
|
|
224
|
+
return true if stripped.empty?
|
|
225
|
+
return true if stripped.match?(/coverage report generated/i)
|
|
226
|
+
return true if stripped.match?(/\A(?:Line|Branch) coverage:/i)
|
|
227
|
+
|
|
228
|
+
false
|
|
229
|
+
end
|
|
230
|
+
|
|
172
231
|
def coverage_task_env(coverage_dir = Constants::COVERAGE_DIR, project_root: Dir.pwd)
|
|
173
232
|
resolved_coverage_dir = File.expand_path(coverage_dir, project_root)
|
|
174
233
|
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kettle-soup-cover
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.0.
|
|
4
|
+
version: 3.0.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -219,6 +219,26 @@ dependencies:
|
|
|
219
219
|
- - ">="
|
|
220
220
|
- !ruby/object:Gem::Version
|
|
221
221
|
version: 1.0.4
|
|
222
|
+
- !ruby/object:Gem::Dependency
|
|
223
|
+
name: anonymous_loader
|
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
|
225
|
+
requirements:
|
|
226
|
+
- - "~>"
|
|
227
|
+
- !ruby/object:Gem::Version
|
|
228
|
+
version: '0.1'
|
|
229
|
+
- - ">="
|
|
230
|
+
- !ruby/object:Gem::Version
|
|
231
|
+
version: 0.1.3
|
|
232
|
+
type: :development
|
|
233
|
+
prerelease: false
|
|
234
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
235
|
+
requirements:
|
|
236
|
+
- - "~>"
|
|
237
|
+
- !ruby/object:Gem::Version
|
|
238
|
+
version: '0.1'
|
|
239
|
+
- - ">="
|
|
240
|
+
- !ruby/object:Gem::Version
|
|
241
|
+
version: 0.1.3
|
|
222
242
|
- !ruby/object:Gem::Dependency
|
|
223
243
|
name: appraisal2
|
|
224
244
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -248,7 +268,7 @@ dependencies:
|
|
|
248
268
|
version: '2.0'
|
|
249
269
|
- - ">="
|
|
250
270
|
- !ruby/object:Gem::Version
|
|
251
|
-
version: 2.0.
|
|
271
|
+
version: 2.0.15
|
|
252
272
|
type: :development
|
|
253
273
|
prerelease: false
|
|
254
274
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -258,7 +278,7 @@ dependencies:
|
|
|
258
278
|
version: '2.0'
|
|
259
279
|
- - ">="
|
|
260
280
|
- !ruby/object:Gem::Version
|
|
261
|
-
version: 2.0.
|
|
281
|
+
version: 2.0.15
|
|
262
282
|
- !ruby/object:Gem::Dependency
|
|
263
283
|
name: turbo_tests2
|
|
264
284
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -268,7 +288,7 @@ dependencies:
|
|
|
268
288
|
version: '3.2'
|
|
269
289
|
- - ">="
|
|
270
290
|
- !ruby/object:Gem::Version
|
|
271
|
-
version: 3.2.
|
|
291
|
+
version: 3.2.3
|
|
272
292
|
type: :development
|
|
273
293
|
prerelease: false
|
|
274
294
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -278,7 +298,7 @@ dependencies:
|
|
|
278
298
|
version: '3.2'
|
|
279
299
|
- - ">="
|
|
280
300
|
- !ruby/object:Gem::Version
|
|
281
|
-
version: 3.2.
|
|
301
|
+
version: 3.2.3
|
|
282
302
|
- !ruby/object:Gem::Dependency
|
|
283
303
|
name: ruby-progressbar
|
|
284
304
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -302,7 +322,7 @@ dependencies:
|
|
|
302
322
|
version: '1.0'
|
|
303
323
|
- - ">="
|
|
304
324
|
- !ruby/object:Gem::Version
|
|
305
|
-
version: 1.0.
|
|
325
|
+
version: 1.0.7
|
|
306
326
|
type: :development
|
|
307
327
|
prerelease: false
|
|
308
328
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -312,7 +332,7 @@ dependencies:
|
|
|
312
332
|
version: '1.0'
|
|
313
333
|
- - ">="
|
|
314
334
|
- !ruby/object:Gem::Version
|
|
315
|
-
version: 1.0.
|
|
335
|
+
version: 1.0.7
|
|
316
336
|
- !ruby/object:Gem::Dependency
|
|
317
337
|
name: gitmoji-regex
|
|
318
338
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -322,7 +342,7 @@ dependencies:
|
|
|
322
342
|
version: '2.0'
|
|
323
343
|
- - ">="
|
|
324
344
|
- !ruby/object:Gem::Version
|
|
325
|
-
version: 2.0.
|
|
345
|
+
version: 2.0.6
|
|
326
346
|
type: :development
|
|
327
347
|
prerelease: false
|
|
328
348
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -332,7 +352,7 @@ dependencies:
|
|
|
332
352
|
version: '2.0'
|
|
333
353
|
- - ">="
|
|
334
354
|
- !ruby/object:Gem::Version
|
|
335
|
-
version: 2.0.
|
|
355
|
+
version: 2.0.6
|
|
336
356
|
description: "\U0001F958 A Covered Kettle of Test Coverage SOUP (Software of Unknown
|
|
337
357
|
Provenance)\nFour-line SimpleCov config, w/ curated, opinionated, pre-configured,
|
|
338
358
|
dependencies\nfor every CI platform, batteries included.\nFund overlooked open source
|
|
@@ -367,10 +387,10 @@ licenses:
|
|
|
367
387
|
- AGPL-3.0-only
|
|
368
388
|
metadata:
|
|
369
389
|
homepage_uri: https://kettle-soup-cover.galtzo.com/
|
|
370
|
-
source_code_uri: https://github.com/kettle-dev/kettle-soup-cover/tree/v3.0.
|
|
371
|
-
changelog_uri: https://github.com/kettle-dev/kettle-soup-cover/blob/v3.0.
|
|
390
|
+
source_code_uri: https://github.com/kettle-dev/kettle-soup-cover/tree/v3.0.6
|
|
391
|
+
changelog_uri: https://github.com/kettle-dev/kettle-soup-cover/blob/v3.0.6/CHANGELOG.md
|
|
372
392
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-soup-cover/issues
|
|
373
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-soup-cover/3.0.
|
|
393
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-soup-cover/3.0.6
|
|
374
394
|
funding_uri: https://github.com/sponsors/pboling
|
|
375
395
|
wiki_uri: https://github.com/kettle-dev/kettle-soup-cover/wiki
|
|
376
396
|
news_uri: https://www.railsbling.com/tags/kettle-soup-cover
|
|
@@ -400,7 +420,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
400
420
|
- !ruby/object:Gem::Version
|
|
401
421
|
version: '0'
|
|
402
422
|
requirements: []
|
|
403
|
-
rubygems_version: 4.0.
|
|
423
|
+
rubygems_version: 4.0.17
|
|
404
424
|
specification_version: 4
|
|
405
425
|
summary: "\U0001F958 kettle-dev OOTB SimpleCov config supporting every CI platform
|
|
406
426
|
& coverage tool"
|
metadata.gz.sig
CHANGED
|
Binary file
|