kettle-soup-cover 3.0.4 → 3.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 24661883c6d80b2870b7ce1b2863bf757f2c69ee27942444e9381a8d6a4b02ff
4
- data.tar.gz: ebe1839e936375c137e92b48793b549999a5fd33ca1e41a7f47f0f15d1535e0c
3
+ metadata.gz: f2cab70ab3f9e1e85974e719bb6dd704ba4d4626f4fb747921d06d1610816d0c
4
+ data.tar.gz: 3d168113fdd9abdd21058e74062cc82092eb0dee897713ab81f4efa846340da5
5
5
  SHA512:
6
- metadata.gz: 1928c5e39c1c01a70eaa38fd6a855202b898aa35cc73e399d04c0742131a584d47671e95f2a846a27ab32dcc97ca3f70b65fd59ff6c96a1ee75418e30993ab44
7
- data.tar.gz: 0d42be0bde858290205d97f1605a7c076ead747ee1109baf3aed78b6e24510a2bd425aead8b924f4bcad2da10850257d23c6ab0372e1264c9d9672e4a759a4a8
6
+ metadata.gz: 28b7c4f8fc0623d46affb22731a83a07ca4ea29382552f2ec6b395463af701fe30f238e0c34c6de3d0edf0bb09bad63e62607152b781cc0e669da84a5488c66e
7
+ data.tar.gz: ceeb87044089392d5d3b1fc71e90013c3a4ae108522c18e3a73971f54e556b06ee3d30b966b2a3ba64e657c9f60c1e3e502b7f3deeb44a248346d65415bcc946
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,32 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [3.0.5] - 2026-07-25
34
+
35
+ - TAG: [v3.0.5][3.0.5t]
36
+ - COVERAGE: 100.00% -- 257/257 lines in 12 files
37
+ - BRANCH COVERAGE: 93.24% -- 69/74 branches in 12 files
38
+ - 16.90% documented
39
+
40
+ ### Changed
41
+
42
+ - The `kettle-soup-cover` executable now supports `-v` / `--version` and prints
43
+ a standard startup header on normal runs.
44
+
45
+ - kettle-jem-template-20260725-001 - Generated JRuby and TruffleRuby workflow
46
+ files now run when pull request head branches start with `feature/release`,
47
+ so release CI monitoring does not report intentionally skipped engine
48
+ workflows as failures.
49
+
50
+ ### Fixed
51
+
52
+ - The `kettle-soup-cover` executable now uses normal `require` loading for its
53
+ version file, avoiding `require_relative` lint drift in shipped executables.
54
+
55
+ - Turbo test coverage collation now disables SimpleCov's process-exit formatter
56
+ after the explicit collate report, preventing duplicate coverage reports from
57
+ one `turbo_tests2` run.
58
+
33
59
  ## [3.0.4] - 2026-07-21
34
60
 
35
61
  - TAG: [v3.0.4][3.0.4t]
@@ -596,7 +622,9 @@ Please file a bug if you notice a violation of semantic versioning.
596
622
 
597
623
  - Initial release
598
624
 
599
- [Unreleased]: https://github.com/kettle-dev/kettle-soup-cover/compare/v3.0.4...HEAD
625
+ [Unreleased]: https://github.com/kettle-dev/kettle-soup-cover/compare/v3.0.5...HEAD
626
+ [3.0.5]: https://github.com/kettle-dev/kettle-soup-cover/compare/v3.0.4...v3.0.5
627
+ [3.0.5t]: https://github.com/kettle-dev/kettle-soup-cover/releases/tag/v3.0.5
600
628
  [3.0.4]: https://github.com/kettle-dev/kettle-soup-cover/compare/v3.0.3...v3.0.4
601
629
  [3.0.4t]: https://github.com/kettle-dev/kettle-soup-cover/releases/tag/v3.0.4
602
630
  [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 Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
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] |
@@ -613,7 +613,7 @@ See [CHANGELOG.md][📌changelog] for a list of releases.
613
613
 
614
614
  ## 📄 License
615
615
 
616
- The gem is available under the following license: [AGPL-3.0-only](AGPL-3.0-only.md).
616
+ 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
617
  See [LICENSE.md][📄license] for details.
618
618
 
619
619
  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 +730,7 @@ Thanks for RTFM. ☺️
730
730
  [📜src-gl]: https://gitlab.com/kettle-dev/kettle-soup-cover
731
731
  [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
732
732
  [📜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=Github&logoColor=green
733
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=GitHub&logoColor=green
734
734
  [📜src-gh]: https://github.com/kettle-dev/kettle-soup-cover
735
735
  [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
736
736
  [📜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 +814,12 @@ Thanks for RTFM. ☺️
814
814
  [📌gitmoji]: https://gitmoji.dev
815
815
  [📌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
816
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
817
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.243-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
817
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.257-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
818
818
  [🔐security]: https://github.com/kettle-dev/kettle-soup-cover/blob/main/SECURITY.md
819
819
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
820
820
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
821
821
  [📄license]: LICENSE.md
822
- [📄license-ref]: AGPL-3.0-only.md
822
+ [📄license-ref]: https://github.com/kettle-dev/kettle-soup-cover/blob/main/AGPL-3.0-only.md
823
823
  [📄license-img]: https://img.shields.io/badge/License-AGPL--3.0--only-259D6C.svg
824
824
  [📄license-compat]: https://www.apache.org/legal/resolved.html#category-x
825
825
  [📄license-compat-img]: https://img.shields.io/badge/Apache_Incompatible:_Category_X-%E2%9C%97-C0392B.svg?style=flat&logo=Apache
@@ -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
@@ -38,6 +49,7 @@ opts = OptionParser.new do |opt|
38
49
  puts opt
39
50
  exit
40
51
  end
52
+ opt.on("-v", "--version", "Show version") {}
41
53
  opt.on("-l", "--lines", "Show only line coverage") { @show_lines = true }
42
54
  opt.on("-b", "--branches", "Show only branch coverage") { @show_branches = true }
43
55
  opt.on("--no-lines", "Don't include line coverage") { @show_lines = false }
@@ -45,6 +57,9 @@ opts = OptionParser.new do |opt|
45
57
  end
46
58
 
47
59
  opts.parse!(ARGV)
60
+
61
+ puts "== #{script_basename} v#{Kettle::Soup::Cover::Version::VERSION} =="
62
+
48
63
  # If a positional arg is present (leftover after parsing) treat it as coverage json path
49
64
  project_root = Dir.pwd
50
65
  coverage_dir = File.expand_path(Kettle::Soup::Cover::COVERAGE_DIR, project_root)
@@ -4,7 +4,7 @@ module Kettle
4
4
  module Soup
5
5
  module Cover
6
6
  module Version
7
- VERSION = "3.0.4"
7
+ VERSION = "3.0.5"
8
8
  end
9
9
  VERSION = Version::VERSION # Traditional Constant Location
10
10
  end
@@ -81,11 +81,16 @@ module Kettle
81
81
  Dir[File.join(turbo_tests_coverage_dir(coverage_dir, project_root: project_root), "*", "coverage.json")]
82
82
  end
83
83
 
84
+ def turbo_tests_collation_marker_path(coverage_dir = Constants::COVERAGE_ROOT_DIR, project_root: Dir.pwd)
85
+ File.expand_path(File.join(coverage_dir, ".turbo_tests_collated"), project_root)
86
+ end
87
+
84
88
  def collate_turbo_tests_coverage!(coverage_dir = Constants::COVERAGE_ROOT_DIR, project_root: Dir.pwd)
85
89
  return :disabled unless turbo_tests_coverage?
86
90
 
87
91
  resultsets = turbo_tests_resultset_paths(coverage_dir, project_root: project_root)
88
92
  return :empty if resultsets.empty?
93
+ return :already_collated if turbo_tests_collated?(resultsets, coverage_dir, project_root: project_root)
89
94
 
90
95
  require "simplecov"
91
96
 
@@ -106,11 +111,27 @@ module Kettle
106
111
  end
107
112
  end
108
113
 
114
+ SimpleCov.external_at_exit = true if SimpleCov.respond_to?(:external_at_exit=)
109
115
  publish_turbo_tests_json_coverage!(coverage_dir, project_root: project_root)
116
+ mark_turbo_tests_collated!(coverage_dir, project_root: project_root)
110
117
 
111
118
  :collated
112
119
  end
113
120
 
121
+ def turbo_tests_collated?(resultsets, coverage_dir = Constants::COVERAGE_ROOT_DIR, project_root: Dir.pwd)
122
+ marker_path = turbo_tests_collation_marker_path(coverage_dir, project_root: project_root)
123
+ return false unless File.file?(marker_path)
124
+
125
+ marker_mtime = File.mtime(marker_path)
126
+ resultsets.all? { |path| File.file?(path) && File.mtime(path) <= marker_mtime }
127
+ end
128
+
129
+ def mark_turbo_tests_collated!(coverage_dir = Constants::COVERAGE_ROOT_DIR, project_root: Dir.pwd)
130
+ marker_path = turbo_tests_collation_marker_path(coverage_dir, project_root: project_root)
131
+ FileUtils.mkdir_p(File.dirname(marker_path))
132
+ FileUtils.touch(marker_path)
133
+ end
134
+
114
135
  def publish_turbo_tests_json_coverage!(coverage_dir = Constants::COVERAGE_ROOT_DIR, project_root: Dir.pwd)
115
136
  paths = turbo_tests_json_paths(coverage_dir, project_root: project_root)
116
137
  return :empty if paths.empty?
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
4
+ version: 3.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -248,7 +248,7 @@ dependencies:
248
248
  version: '2.0'
249
249
  - - ">="
250
250
  - !ruby/object:Gem::Version
251
- version: 2.0.12
251
+ version: 2.0.15
252
252
  type: :development
253
253
  prerelease: false
254
254
  version_requirements: !ruby/object:Gem::Requirement
@@ -258,7 +258,7 @@ dependencies:
258
258
  version: '2.0'
259
259
  - - ">="
260
260
  - !ruby/object:Gem::Version
261
- version: 2.0.12
261
+ version: 2.0.15
262
262
  - !ruby/object:Gem::Dependency
263
263
  name: turbo_tests2
264
264
  requirement: !ruby/object:Gem::Requirement
@@ -367,10 +367,10 @@ licenses:
367
367
  - AGPL-3.0-only
368
368
  metadata:
369
369
  homepage_uri: https://kettle-soup-cover.galtzo.com/
370
- source_code_uri: https://github.com/kettle-dev/kettle-soup-cover/tree/v3.0.4
371
- changelog_uri: https://github.com/kettle-dev/kettle-soup-cover/blob/v3.0.4/CHANGELOG.md
370
+ source_code_uri: https://github.com/kettle-dev/kettle-soup-cover/tree/v3.0.5
371
+ changelog_uri: https://github.com/kettle-dev/kettle-soup-cover/blob/v3.0.5/CHANGELOG.md
372
372
  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.4
373
+ documentation_uri: https://www.rubydoc.info/gems/kettle-soup-cover/3.0.5
374
374
  funding_uri: https://github.com/sponsors/pboling
375
375
  wiki_uri: https://github.com/kettle-dev/kettle-soup-cover/wiki
376
376
  news_uri: https://www.railsbling.com/tags/kettle-soup-cover
@@ -400,7 +400,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
400
400
  - !ruby/object:Gem::Version
401
401
  version: '0'
402
402
  requirements: []
403
- rubygems_version: 4.0.16
403
+ rubygems_version: 4.0.17
404
404
  specification_version: 4
405
405
  summary: "\U0001F958 kettle-dev OOTB SimpleCov config supporting every CI platform
406
406
  & coverage tool"
metadata.gz.sig CHANGED
Binary file